我的.htaccess中有以下规则:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^index\.php$
RewriteRule ^(.*)$ index.php?q=$1 [L]
</IfModule>
这将查询字符串值q
设置为请求uri(在index.php所在的目录之前删除任何前面的目录)。
例如:http://localhost/framework/testing
设置q=testing
。
我想更改此设置,以便不是设置查询字符串,而是设置环境变量。我尝试了以下但它不起作用(环境var没有设置):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^index\.php$
RewriteRule ^(.*)$ index.php [ENV=request:$1,L]
</IfModule>
奇怪的是,如果请求以index.php开头,环境变量将被设置,例如:http://localhost/framework/index.php/testing
设置q=index.php/testing
答案 0 :(得分:2)
使用PATH_INFO(正如@chrono所建议的)和稍微不同的mod_rewrite规则我已按要求工作了!
修改.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^index\.php
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
答案 1 :(得分:0)
我认为,您实际需要的是PATH_INFO
- 如下所述:What exactly is PATH_INFO in PHP?
除非有其他原因,否则无需重新发明轮子。