1

我的 htaccess 中有以下代码。该站点运行良好(即:没有 500 错误),但它没有在我的 URL 中添加斜杠:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteRule ^(.*)$ /index.php?$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://staging.foo.com/$1/ [L,R=301]

</IfModule>

我在这里有什么问题?

4

1 回答 1

0

您需要交换规则的顺序

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://staging.foo.com/$1/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteRule ^(.*)$ /index.php?$1 [NC,L]

</IfModule>

它不起作用的原因是因为首先/index.php应用了路由到规则,然后是重写引擎循环,然后第二个规则(重定向规则)将不会被应用,因为 URI 已被重写,这导致失败,因为存在,因此,重定向永远不会发生。/index.php%{REQUEST_FILENAME} !-findex.php

于 2013-09-17T20:41:45.847 回答