RewriteRule可选的尾部斜杠问题

时间:2011-01-20 07:28:17

标签: apache mod-rewrite slash trailing

处理我正在与wordpress网站并行构建的应用程序,并打开永久链接。因此,htaccess中还有其他重写可以处理wordpress的所有方面。但是,我试图在它到达那些之前执行我自己的一些重写。 - 并且在我之后使用[L]。 一切都工作正常,直到我尝试将选项添加到结尾,允许斜线或没有斜线(并且仍然匹配)。

以下是在此服务器上抛出500错误的示例:

RewriteRule ^app/([^/]+)/?$ /app/$1\.php [L,QSA]

http://<domain>.com/app/login
or
http://<domain>.com/app/login/

但是以下工作正常,并且高于htaccess中的前一个示例。

RewriteRule ^app/p/([^/]+)/?$ /app/page.php?page_slug=$1 [L,QSA]

http://<domain>.com/app/p/styles
or
http://<domain>.com/app/p/styles/

我尝试过变化很少/没有成功。

RewriteRule ^app/([^/]+)/{0,1}$ /app/$1\.php [L,QSA]
and
RewriteRule ^app/([^/]+)[p]/[\p]?$ /app/$1\.php [L,QSA]

1 个答案:

答案 0 :(得分:2)

这是因为您的目标位置/app/$1.php与源位置^app/([^/]+)/?$完全匹配。所以页面被重定向到自己。

RewriteCond %{REQUEST_URI} !\.php
RewriteRule ^app/([^/]+)/?$ /app/$1.php [L,QSA]