提问人:Zeeba 提问时间:10/8/2013 更新时间:10/8/2013 访问量:276
htaccess rewrite ?p= (我看不懂代码)
htaccess rewrite ?p= (I don't understand the code)
问:
我想我已经阅读了有关htaccess重写的所有内容,但我仍然无法弄清楚发生了什么。我重新制作了一个工作网站,一切都很好,除了最后一位设计师做了一些疯狂的 php 东西,他使用的所有 url 都有 ?=p(pagename) 我想将它们重新设置为 (pagename).php,然后使用 301 将它们重定向到 我能够获得 301 重定向工作只是无法弄清楚如何将 ?p=(pagename) 重写为 (pagename).php
答:
1赞
Patrick Evans
10/8/2013
#1
您需要检查QUERY_STRING,然后应用重写规则
RewriteCond %{QUERY_STRING} ^p=(.*)$
RewriteRule ^(.*)$ http://mydomain.com/%1.php [R=301,L]
检查只有一个变量的查询字符串,如果查询字符串中有任何其他变量,则必须对其进行修改,例如等^p=(.*)$
p=pagename
p=pagename&id=15
2赞
Jon Lin
10/8/2013
#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]
评论
0赞
Zeeba
10/8/2013
天哪,非常感谢你,我几个星期以来一直在努力做到这一点。
评论