htaccess删除.php并保留查询字符串

时间:2013-03-19 18:04:21

标签: php .htaccess get

现在是我的.htaccess文件。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [NC,L,QSA]

这可以使它在不使用.php扩展名时可以访问我的页面。

Old = domain.com/test.php
New = domain.com/test

糟糕的是,当我使用以下链接发送数据时,数据不会传递。我认为QSA选项就是这样做的,这笔交易是什么?

domain.com/test?id=1

3 个答案:

答案 0 :(得分:5)

匹配整个查询字符串并使用反向引用将其附加到新网址应该有效。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)$ $1.php?%1 [NC,L,QSA]

答案 1 :(得分:0)

如果您要传递id,则必须使用此代码

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^test/(.*)$ /test.php?id=$1

现在您可以访问

domain.com/test?id=1

domain.com/test/1

答案 2 :(得分:0)

这是一个更简单的解决方案。我们在团队项目中使用它。它不仅可以在根目录中使用,还可以在您网站的任何目录中使用。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php