我正在尝试在htaccess中设置通用规则,以便使用不同的查询字符串删除.php扩展名和链接,例如
domainname.com/welcome.php?user=normal&type=free&uid=100
domainname.com/welcome.php?user=normal
domainname.com/welcome.php?log=new&theme=red
预期链接如
domainname.com/welcome?user=normal&type=free&uid=100
domainname.com/welcome?user=normal
domainname.com/welcome?log=new&theme=red
在htaccess文件中设置的规则如:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/welcome/$ $1/welcome.php? [QSA,NC,L]
但有些人怎么不工作。我做错了什么。
答案 0 :(得分:1)
在根目录的.htaccess文件中尝试:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !welcome\.php [NC]
RewriteRule ^welcome/? /welcome.php [NC,L]
查询字符串将自动传递。
答案 1 :(得分:0)
您的答案和评论中的规则设置无序。如果您希望使用查询字符串将/$dynamic
重写为/$dynamic.php
,则必须尝试以下代码:
Options+ FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/([a-z0-9-_]+)/?$
RewriteRule ^(.*) /%1.php [QSA]
即使/index1
,/index2
,/index3
,/etc
也会被重写。