2013-10-07 64 views
2

我認爲我已經閱讀了關於htaccess重寫的所有內容,而且我仍然無法制定正在發生的事情的正面或反面。我重新建立了一個工作網站,除了最後一位設計師做了一些瘋狂的php和他使用的所有url之外,一切都很好?= p(pagename)我想將這些重新引導到(pagename).php,然後將它們重定向到301我能得到301重定向的作品只是無法弄清楚如何改寫?p =(頁面名)到(頁面名).PHPhtaccess rewrite?p =(我不明白代碼)

回答

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

OMG太感謝你了,我一直試圖做的是幾個星期。 – Zeeba

1

您需要檢查QUERY_STRING,然後應用重寫規則

RewriteCond %{QUERY_STRING} ^p=(.*)$ 
RewriteRule ^(.*)$ http://mydomain.com/%1.php [R=301,L] 

^p=(.*)$檢查查詢字符串,只有有一個變量p=pagename,你將不得不修改它是否會有在查詢字符串像p=pagename&id=15等任何其他變量