2012-12-13 26 views
3

我用mod_rewrite很綠。我有這個工作如飛的第一線,但第二部分拒絕合作htaccess - 將.shtml和.html重寫爲。 php

RewriteRule ^(.*).html$ $1.php 
RewriteRule ^(.*).shtml$ $1.php [R=301,L] 

.shtml部分奇妙和404失敗 - 沒有我的自定義404頁。這應該合併爲一個規則?我應該放棄我的工作,讓他們僱用一隻猴子來代替我嗎?有沒有人得到這個解決方案?

謝謝!

+0

你能解釋(用文字)哪個擴展名重定向到什麼?猴子可以重寫嗎? –

+0

@SalmanA百萬年以來,百萬個鍵盤上百萬只猴子最終將所有'.html'請求重定向到'www.nationalgeographic.com'。 –

+0

@Salman A 1.我需要將.html和.shtml都改寫爲.php 2.如果可以,我無法想象一隻猴子離得很遠 –

回答

1

假設你正打算重定向都.shtml.html.php ...

這些都應該被合併成一個規則,這個問題看起來是兩個匹配,因爲轉義.之前.html代表「任何字符「,因此也匹配shtml

圖案\.s?html將匹配字面.,接着是可選s,並用html結束。

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

啊!你的技術點是有道理的。謝謝你的澄清。然而,你的建議並不適合我。我從IE和FF那裏得到了一個重定向投訴:「該頁面沒有正確重定向」。任何其他想法? –

+0

@AmeliaEarhart您將不得不查看Web服務器訪問和錯誤日​​志。如果它正在進入一個重寫循環,那可能是由於這個目錄或另一個目錄中的其他重寫規則。如上所述,.php請求無法匹配此規則並進入重寫循環。 –

+1

你想實際上將瀏覽器重定向到'.php',或者在瀏覽器不知道它的情況下悄悄地爲'.php'腳本提供服務嗎? (如果靜靜地,刪除R = 301) –