2011-07-29 94 views
1

我正在尋找將所有頁面的擴展名從HTML更改爲PHP,因爲我重做公司的網站。所以我將這些行添加到.htaccess文件中。301重定向優先順序

RewriteEngine On 
RewriteRule ^/?(.*)\.html$ /$1.php [R=301,L] 

但是,聯繫人和關於頁面位於舊網站的文件夾中,我不想將它們放到新網站上。所以,如果我把上面的通用的「HTML到PHP」的具體重定向重定向,像這樣:

redirect 301 /company-information/contact.html http://www.example.com/contact.php 

RewriteEngine On 
RewriteRule ^/?(.*)\.html$ /$1.php [R=301,L] 

威爾重定向的聯繫頁面甚至着眼於通用重定向或它一路前通過.htaccess文件並覆蓋文件中之前的任何內容。

或者我完全在我的頭上,還有另一種更好的方法呢?

回答

1

誠如@LazyOne評論提到更高的優先級規則應該去較低優先級規則.htaccess

0

首先,我不明白你爲什麼要更改爲客戶端文件名的後綴。簡單地刪除它是更好的&。

其次,Apache's Redirect directive通知發送HTTP Location標頭的客戶端從另一個位置獲取資源。這是多餘的/無用的往返。

這是更好地使用重寫規則向用戶提供不同的內容,請嘗試:

RewriteCond ${REQUEST_URI} =/company-information/contact.html 
RewriteRule ^(.*)$ /contact.php [L] 
+0

作爲一個首選項,我更喜歡將文件擴展名看作是用戶,以便在我查看URL時知道我在頁面上而不是目錄中。其次,我需要使用301s來保持我們的優秀搜索引擎優化,所以如果我使用了你在那裏提出的重寫規則,但後綴爲[[R = 301,L]',那麼我需要將該行與通用重寫規則的其他網頁,以便它不會使用通用規則將用戶重定向到/company-information/contact.php? – RichieAHB

+0

@Dor爲什麼你需要2行(RewriteRule&RewriteCond),當你可以用一個RewriteRule行來做同樣的事情? – LazyOne

+0

@richieahb這樣的具體規則應該放在**通用規則之前**。 – LazyOne