2013-03-06 56 views
1

我使用下面的代碼...mod.rewrite多個規則同一目錄

#Fix Rewrite 
Options -Multiviews 

# Mod Rewrite 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)?$ index.php?q=$1 [L] 

www.website.com/index.php?q=Keywordwww.website.com/Keyword

偉大的工程....但是....

我也(在同一目錄中)有一個名爲spec.php的文件,它接受GET變量eid

我還需要有一個轉www.website.com/spec.php?eid=00000www.website.com/00000www.website.com/spec/00000無需實際移動spec.php到子目錄中的規則。

任何幫助將非常感激,我的眼睛有谷歌燒傷。我發現有些做了類似的事情,但是當我嘗試將它與我的情況相匹配時,我遇到了問題。

+0

「將」www.website.com/index.php?q = Keyword「變成」www.website.com/Keyword「:這應該是另一種方式,不是嗎? – ultranaut 2013-03-06 01:02:35

回答

0

所以這條線在這裏

RewriteRule ^(.*)?$ index.php?q=$1 [L] 

是匹配的一切,如果你想擁有website.com/Keyword工作和website.com/spec/0000工作,那麼你需要添加另一個條件

我認爲這會工作

RewriteRule ^/spec/(.+)$ /spec.php?eid=$1 [L] 
RewriteRule ^(.*)?$ /index.php?q=$1 [L] 

這是什麼意思?

第一部分是正則表達式,第二部分是要映射到的URL,最後一部分是標誌。在這種情況下,我們首先將/spec/條件放在第一位,因爲第二條件與其他所有條件匹配,然後確保[L]標誌設置爲,它告訴mod_rewrite在當前條件匹配時停止。