htaccess重写?p =(我不懂代码)

时间:2013-10-07 16:54:52

标签: .htaccess mod-rewrite url-rewriting

我想我已经阅读了关于htaccess重写的所有内容,但我仍然无法做出正面或反面的事情。我做了一个网站工作,一切都很好,除了最后一个设计师做了一些疯狂的PHP的东西和他使用的所有网址?= p(网页名称)我想将这些改为(页面名称).php然后将它们重定向到一个301我能够得到301重定向的工作只是无法弄清楚如何重写?p =(pagename)到(pagename).php

2 个答案:

答案 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