2014-12-03 40 views
0

我想重寫任何網頁的URL包含-new.php/new國防部重寫-new.php到/新

例如:

example.com/page-new.php 

example.com/page/new 

我能以下面的規則刪除結尾.php,但我不知道如何匹配-new

RewriteRule ^([^\.]+)$ $1.php [NC,L] 

回答

1

您的規則實際上會將.php添加到最後。

RewriteRule ^(.*)-new\.php$ $1/new [NC,L] 

刪除-new.php它變爲/新


編輯:

一段時間的思考後,如果您希望用戶重定向,使用上面和將「R = 301」添加到括號中作爲第三個參數。

,或者,如果你確實有-new.php模式在/頁/新架構鏈接和文件,那麼你實際上想要remowe /新並添加-new.php。如果是這樣,那麼你問錯了問題。在這裏你去:

編輯2:

你也想重定向/頁page.php文件。現在,您可以通過兩種方式做到這一點:

RewriteRule ^(.*)/new$ $1-new.php [NC,L] 
RewriteRule ^(.*)$ $1.php [NC,L] 

OR

RewriteRule ^(.*)/new$ $1-new [NC] 
RewriteRule ^(.*)$ $1.php [NC,L] 

第一個是兩個單獨的規則,首先爲/新的URL,然後其他。
二碼就像是「第一個變化/新 - 新的,然後應用下一條規則」如果你想排除只適用於網址沒有點什麼的,然後更換

(。*)與其他任何規則像例如([^ \。] *)

+0

感謝您的答案。我原來的鏈接是'page.php'和'page-new.php'。我想在我的代碼中將它們鏈接爲'/ page'和'/ page/new'。你建議的第二條規則完全符合我的要求,但它不會將'page.php'重寫爲'/ page'(我的代碼是這樣做的)。我無法將我的規則與你的規則結合起來。 – user1355300 2014-12-03 12:53:44

+0

立即檢查,我編輯了腳本。規則順序在這裏至關重要。如果你先應用.php,那麼規則檢查「/新」在最後不會觸發。 – Forien 2014-12-03 13:08:22