1

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

我使用 svn:external 将核心文件和功能检出到项目中。现在,当我有一个与我的功能同名的目录时,问题就出现了,例如,我将“property”检出到一个名为“property”的文件夹中。我添加了一条规则,以便如果文件存在则忽略它并使用与上述相同的行为,但是当我尝试 /property时,它会将 url 更改为/property/?url=property 但是当我执行/property/时,它仍然是这就是我所追求的。

我快到了,但只是不知道如何在 url 没有 / after 属性(或任何文件存在)(/property/)时不显示 /?url=property 。

这是我的 .htaccess - 请耐心等待,重写对我来说是新的领域,这甚至可能不正确。基本上在下面我有2条规则,第一个用于所有不存在的文件,然后第二个用于确实存在的文件-但我想忽略并使用与第一条规则相同的行为。

   #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>        
4

1 回答 1

0

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

 DirectorySlash On

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

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

于 2013-11-02T15:02:53.917 回答