2014-12-25 32 views
1

我已遷移到新的域名,現在使用.PHP而不是經典的.ASP。 我成功地設置了一個.htaccess來將所有舊的.ASP請求重定向到.PHP請求。但只是無法獲取根默認文檔重定向。。即使重定向匹配適用,htaccess也會重寫

這是我的.htaccess文件的一個例子。

RewriteEngine on  
RedirectMatch ^(.*).asp http://newdomain.com$1.php 
# RewriteRule ^(.*)$ http://newdomain.com/$1 

隨着htaccess的看起來像上述(註釋第二行),以

http://olddomain.com 

請求簡單地示出了舊域。但深層文件按我的意願工作。例如。到

http://olddomain.com/somefile.asp 

的請求會去

http://newdomain/somefile.php 

如果我取消第二行,根現在重定向正常,但其他一切都搞砸了。例如。的請求

http://olddomain.com/somefile.asp 

會簡單地改寫爲:

http://newdomain/somefile.asp 

(而不是.PHP)

所以我想1號線採取優先和2號線僅應適用,如果他們正好請求

http://olddomain.com 

我調查發現,也許我在第1行末尾加[L]就是我的答案。但是,當我這樣做時,我得到500 - 內部服務器錯誤。

任何想法?

+0

anubhava,這很好。非常感謝!我還有一個奇怪的問題。我有一個頁面不會重定向到.php。它仍然嘗試重定向到.asp頁面。例如。 http://olddomain.com/pages/events/events.asp仍然去http://newdomain.com/pages/events/events.asp與此同時,我嘗試的每一個其他頁面都很好。例如。 http://olddomain.com/pages/products/products.asp正確地去http://newdomain.com/pages/products/products.php ---也許「事件」是某種保留字?我的.htaccess文件在根目錄中,並且在/ pages或/ pages/events目錄中沒有。 – Thread7

+1

我收回了最後一條語句,events.asp現在正在重定向。也許我的舊正則表達式被搞亂了。再次感謝! – Thread7

回答

1

您正在混合RedirectMatchmod_alias規則與mod_rewrite規則。試試這個:

RewriteEngine on 

RewriteRule ^(.+?)\.asp$ http://newdomain.com/$1.php [L,NC,R=302] 
RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=302]