Apache:RewriteRule删除尾随点

时间:2010-01-11 02:39:07

标签: php apache mod-rewrite trailing

这是我的.htaccess规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)/(.*)$ index.php?var1=$1&item=$2&var2=%{REQUEST_URI} [NC,L]
RewriteRule ^(.*)$ index.php?var1=$1 [NC]

这是一个网址(最后有一个尾点): http://localhost/test/secondvar.

问题是尾随点不在var2 GET变量

我使用了print_r($_GET),这是上面网址的结果:

Array ( [var1] => test [var2] => secondvar [uri] => /test/secondvar. )

所以我的问题是,如何将URL中的尾随点作为var的参数?如您所见,REQUEST_URI显示apache知道点。

我知道我不能将路径作为GET参数发送,并注意从PHP中读取URI中的路径,但我想知道为什么点不会到来以及如何修复它,如果太复杂,我宁愿选择直接的PHP解决方案。

编辑:不仅是尾随点而是尾随?太...... = [

1 个答案:

答案 0 :(得分:0)

可能只是php排除尾随点。我知道他们经常将POST / GET中的dot转换为下划线。我会做的

explode('/',$_SERVER['REQUEST_URI'])