删除PHP扩展并使用.htaccess重写查询字符串

时间:2012-05-21 23:52:22

标签: php .htaccess url-rewriting

我正在尝试重新构建现有网站,同时将网址重新编写为更加用户友好的格式。我现在拥有的是http://example.com/test_vars.php?test_var1=value1&test_var2=value2,理想情况下,我想要的是http://example.com/test_vars/test_var1/value1/test_var2/value2

不可否认,我是修改htaccess文件的新手,但是已经完成了我的研究并尝试了一些方法。我最接近我正在寻找的东西(诚然不是那么接近),但我附上了以下代码:

Options +FollowSymLinks
Options +Indexes
RewriteEngine on
DirectoryIndex index.html

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(([^/]+/)*[^.]+)$ /$1 [L]

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.html
RewriteRule .* index.html

有了这个,我最终得到一个http://example.com/test_vars.php/test_var1/value1/test_var2/value2的URL,但是没有一个变量被传递给页面。

1 个答案:

答案 0 :(得分:1)

test_vars.php中,您必须手动解析参数。 $_SERVER['REQUEST_URI']将包含/test_var1/value1/test_var2/value2。编写一个简单的函数来解析字符串explode(),例如。

要使您的网址没有“.php”扩展名,请更改此行

RewriteRule ^(([^/]+/)*[^.]+)$ /$1 [L]

对此:

RewriteRule ^test_vars test_vars.php

现在你有了漂亮的网址:http://example.com/test_vars/test_var1/value1/test_var2/value2