我想我已经阅读了关于htaccess重写的所有内容,但我仍然无法做出正面或反面的事情。我做了一个网站工作,一切都很好,除了最后一个设计师做了一些疯狂的PHP的东西和他使用的所有网址?= p(网页名称)我想将这些改为(页面名称).php然后将它们重定向到一个301我能够得到301重定向的工作只是无法弄清楚如何重写?p =(pagename)到(pagename).php
答案 0 :(得分:2)
您希望与实际请求进行匹配,然后在内部将其重写回查询字符串:
RewriteEngine On
# 301 redirect to php file
RewriteCond %{THE_REQUEST} \ /\?p=([^&\ ]+)&?([^\ ]*)
RewriteRule ^ /%1.php?%2 [L,R=301]
# internally rewrite to the query string
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.php$ /?p=$1 [L,QSA]
答案 1 :(得分:1)
您需要检查QUERY_STRING,然后应用重写规则
RewriteCond %{QUERY_STRING} ^p=(.*)$
RewriteRule ^(.*)$ http://mydomain.com/%1.php [R=301,L]
^p=(.*)$
检查只有一个变量p=pagename
的查询字符串,如果查询字符串中有任何其他变量,则必须修改它p=pagename&id=15
等