Regex 如果目录存在,则重写添加额外url参数的规则

Regex 如果目录存在,则重写添加额外url参数的规则,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我在我的.htace中设置了一些重写。它当前设置为将所有文件指向/core/index.php,这很好 我使用svn:external将核心文件和功能签出到项目中。现在,当我有一个与我的功能同名的目录时,问题就出现了。例如,我将“property”签出到一个名为“property”的文件夹中。我添加了一个规则,如果文件存在,那么忽略它,并使用与上面相同的行为,但当我尝试时 /属性它将url更改为/property/?url=property 但当我做了/财产/它保持原样,这就是我所追求的 我就快

我在我的.htace中设置了一些重写。它当前设置为将所有文件指向/core/index.php,这很好

我使用svn:external将核心文件和功能签出到项目中。现在,当我有一个与我的功能同名的目录时,问题就出现了。例如,我将“property”签出到一个名为“property”的文件夹中。我添加了一个规则,如果文件存在,那么忽略它,并使用与上面相同的行为,但当我尝试时 /属性它将url更改为/property/?url=property 但当我做了/财产/它保持原样,这就是我所追求的

我就快到了,但就是想不出当url没有/after属性(或任何文件都存在)(/property/)时,如何不显示/?url=property

这是我的.htaccess-请容忍我的这一点,这对我来说是一个新的领域,甚至可能是不正确的。基本上下面我有两条规则,第一条规则适用于所有不存在的文件,第二条规则适用于确实存在的文件,但我想忽略并使用与第一条规则相同的行为

   #re-write for file that don't exist
    <IfModule mod_rewrite.c>
      RewriteEngine On

      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-l

      RewriteRule ^(.*)$ /core/index.php?url=$1 [L]
    </IfModule>

    #re-write for file that do exist
    <IfModule mod_rewrite.c>
      RewriteEngine On

      RewriteCond %{REQUEST_FILENAME} -d
      RewriteRule ^(.*)$ /core/index.php?url=$1 [L]

    </IfModule>        
#为不存在的文件重新写入
重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-L
重写规则^(.*)$/core/index.php?url=$1[L]
#为确实存在的文件重新写入
重新启动发动机
RewriteCond%{REQUEST_FILENAME}-d
重写规则^(.*)$/core/index.php?url=$1[L]

尝试在.htaccess的顶部添加这一行

 DirectorySlash On

 ## Adding a trailing slash
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_URI} !/$
 RewriteRule . %{REQUEST_URI}/ [L,R=301]

如果请求的是目录,这将始终添加斜杠,您将能够避免此问题。

Q1。这是唯一的.htaccess还是你有其他的?问题2。这是这个.htaccess中唯一的代码吗?如果你有一些其他的代码,那么请张贴它的问题?第三季度。上面的.htaccess的位置是什么?没有其他的.htaccess文件存在,这是其中唯一的代码。它位于根目录中。好的,我添加了一个
添加尾部斜杠的规则。确保这条规则在其他规则之前放在最上面,然后重新测试。非常好,谢谢。这基本上是说,如果文件不存在,结尾没有/,那么添加斜杠?