2014-01-19 44 views
2

我正在寫一些mod_rewrite規則,我有點卡在其中之一。基本上,我想進入以下網址pricing/packages/basic/not-for-profitpricing-packages-basic-not-for-profit.php如何檢測mod_rewrite的斜槓

我想我可以用

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1-$2-$3-$4.php 

有沒有寫,只是自動計算斜線規則的方法嗎?所以例如相同的規則將適用於上述示例,並且還可以應用pricing/a-package-for-you

感謝您的幫助!

回答

1

此代碼應在DOCUMENT_ROOT/.htaccess文件爲你工作:

RewriteEngine On 

RewriteRule "^([^/]+)/([^/]+/.+)$" /$1-$2 [N] 
RewriteRule "^([^/]+)/([^/]+)$" /$1-$2.php [L] 

說明:如果至少有2個斜槓的URI,如果

首先這裏的規則搜索是那麼第一個斜槓被轉換爲連字符。這個規則重複,直到URI中至少有2個斜槓。 [N]標誌導致規則集從頂部重新開始,使用規則集的結果作爲起點。

最後,當有一個斜線時,執行第2條規則,將斜槓轉換爲連字符,最後加上.php

UPDATE:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^([^/]+)/?$ /$1.php [L] 
+0

對不起,我可能沒有解釋自己好了,我的意思是那裏會照顧了所有的重功能的URL,無論寫斜線量? –

+0

這段代碼的功能完全相同,即無論有多少斜線,都會將它們轉換爲連字符。 – anubhava

+0

太棒了!謝謝!你介意給我解釋它是如何工作的嗎? –