2010-01-11 35 views
1

这里是我的.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] 

这里是一个URL(在末尾的尾随点): http://localhost/test/secondvar.

的问题是,后点是在var2GET变量

我用了一个print_r($_GET)这里内不来与上述网址结果:

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

所以我的问题是,我怎样才能从URL的尾部点作为var的参数?如您所见,REQUEST_URI显示apache知道点。

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

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

+0

你不会轻易得到尾随?因为它不是'{REQUEST_URI}'的一部分,所以它被解释为请求URI和查询字符串之间的分隔符。 我很快尝试重新创建问题,但我不能。尾随。奇迹般有效。 你使用的是什么版本的PHP和Apache? – anq 2010-01-11 03:13:37

+0

PHP Version 5.3.0, Apache 2.0 Handler – Jonathan 2010-01-11 11:36:18

回答

0

这可能只是PHP不包括尾随点。我知道他们经常将POST/GET中的点转换为下划线。我只想做

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