2015-10-30 45 views
0

我從.php我的網址擴展轉換爲.html在我.htaccessURL重寫.PHP爲.html

RewriteEngine On 
RewriteBase/ 
RewriteCond %{THE_REQUEST} (.).php 
RewriteRule ^(.*).php $1.html [R=301,L] 
RewriteRule ^(.*).html $1.php [L] 
FallbackResource /index.php 

的問題是,我有一個詞「PHP」某些部分就可以了:

www.mywebsite.com/phpscripts.php 

而當它被轉換:

www.mywebsite.com/htmlscripts.html 

回答

0
^(.*).php 

這個正則表達式說:什麼都沒有,其次是單個任意字符,後面跟着「php」。例如,它會匹配「blahphp.html」,特別是匹配「blahphp」部分,根本不在意擴展名。

什麼你要找的是這樣的:

RewriteRule (.+)\.php$ $1.html [R=301,L] 
RewriteRule (.+)\.html$ $1.php [L] 

(.+)\.php$東西(至少一個字符),後跟一個時期,其次是「PHP」 在字符串結束。您也可以擺脫RewriteCond,它不會爲這些規則添加任何內容。

另請注意,您應該更改所有HTML文件以鏈接到href="...html"。不要單靠這些重定向來解決您的問題;重定向每個請求不僅效率低下,而且還會破壞POST請求。重定向試圖打開舊URL的客戶端是可以接受的,無論出於何種原因到新的規範URL。

+0

無效(重定向LOOP)RewriteEngine敘述在 RewriteBase/ 重寫規則(+)\。PHP $ $ 1.HTML [R = 301,L] 重寫規則(+)\。HTML $ $ 1.PHP [ L] FallbackResource /index.php –

+0

我使用redirectdetctive分析它:它多次重定向到www.mywebsite.com/phpscripts.html,所以第一個問題已解決,但如何處理循環 –

+0

啓動Apache調試級別並分析Apache日誌中的重寫過程,如果這是您有權訪問的內容。 – deceze