2010-01-12 137 views
0

我一直在試圖添加一個mod_rewrite到一個網站,但它只有勉強工作。mod_rewrite友好的網址

這個URL, 「http://domain.com/folder/server/subfolder/index.php」 應該被改寫爲 「http://domain.com/folder/subfolder/index.php?platform=server

這是最後的版本,我心中已經試過至今。

RewriteEngine On 
RewriteCond %{REQUEST_URI} !(css|images|scripts|js|files) 
RewriteRule ^([A-Za-z0-9]+).*/(.*)$ $2?platform=$1& [L] 

規則應適用於每一個URL,閹沒有子文件夾,只需1〜5 什麼我不能做的是使重寫規則做的東西一樣的index.php /服務器/參數2 /參數3因爲我將不得不重寫所有的代碼才能兼容。

任何幫助將不勝感激。

回答

1

試試這個規則:

RewriteRule ^([^/]+)/([^/]+)/(.+) $1/$2?platform=$2 [L] 

編輯如果你想使用的規則在文檔根目錄下的子目錄下,有以下路徑段任意數量的,請嘗試以下規則:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/(.+) $2?platform=$1 [L,QSA] 
+0

我想他只想要一個黑名單('(css | images | scripts | js | files)'),不應該被轉發 – 2010-01-12 20:26:34

+0

我想阻止圖像,css,sc ripts等通過這條規則。 而上面的RewriteRule並不完全工作,它總是期望:server/subfolder/file.php 我需要它期望0或更多的子文件夾,所以server/file.php或服務器/子文件夾/子文件夾/文件。 PHP。 原因我有像server/cms/cms.php和server/index.php的URL。 – Thul 2010-01-13 08:40:50

+0

對上述重寫規則進行了小調整: RewriteCond%{REQUEST_FILENAME}!-f RewriteRule ^([^ /] +)/(。*)$ 2?platform = $ 1 [L,QSA] – Thul 2010-01-14 15:04:08