mod_rewrite在不使用尾部斜杠时附加查询字符串

时间:2012-03-14 15:07:56

标签: mod-rewrite

我花了一些时间在谷歌和SO试图解决这个问题,我现在不得不诉诸另一个mod_rewrite问题....

我正在使用mod_rewrite,并且大多数情况下它工作正常。

我遇到问题的部分是:

# Load pages for health-it while keeping the URL masked
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^health-it/([-a-z0-9]+)/? /health-it/loadPage.php?p=$1 [NC,L]

我有一个我想要的URI:

/health-it/aimsconsultant

问题是,mod_rewrite正在这样做:

/health-it/aimsconsultant/?p=aimsconsultant

页面仍然加载,但URI是问题。

/health-it/aimsconsultant/

按预期工作。应该注意/ health-it / aimconsultant是一个目录,也许这就是原因?我相信Apache重定向会附加目录的尾部斜杠,但为什么会附加查询字符串呢?

它适用于内部页面(没有内部页面的目录):

/health-it/aimsconsultant/manufacturer-signup

/health-it/aimsconsultant/manufacturer-signup/

正常工作。

唯一的问题是在第一级...这对我没有任何意义,我感到困惑的是为什么会发生这种情况。请问,有人可以告诉我如何解决这个问题以及为什么这样做会这样做?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

好的,对不起,我误读了?换一个$!

尝试添加这个,似乎对工作:

DirectorySlash Off

默认情况下,它是On,这就是为什么当Apache尝试获取您的URL的规范表示时,它会回退到目录。

答案 1 :(得分:0)

为URL版本添加特定条目,不带斜杠:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^health-it/([-a-z0-9]+)? /health-it/loadPage.php?p=$1 [NC,L]

我已经遇到过这种问题,即使没有QSA标志,mod_rewrite也会附加查询字符串。不知道为什么......