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


htaccess remove .php and keep query string

这是我现在的。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

糟糕的事情是,当我用以下链接发送get数据时,数据没有传递。我以为QSA期权就做到了,有什么大不了的?

domain.com/test?id=1

匹配整个查询字符串并使用反向引用将其附加到新URL中应该可以工作。

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

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

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

如果您通过了id,那么您必须使用此代码

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

现在可以访问

domain.com/test?id=1

domain.com/test/1