2017-04-09 22 views
0

我能得到的網址中使用此代碼工作使用不止一個友好的URL與mod_rewrite的

RewriteRule ^(.*)/([^/\.]+)/?$ $1/index.shtml?dynContent=$2 [L] 

所以dynContent =蘋果或香蕉或香蕉,蘋果

所以,如果我在http://example.com/dir1/apples型或/ DIR1 /香蕉或/ DIR1 /香蕉,蘋果也顯示使用正確的內容,我拉進index.shtml

不過,我有一個網頁,必須整版,我已經一個頁面配置去全頁面,它被命名爲indexFP.shtml

的dynContent =這一個頁面

橘子我有重寫規則作爲

RewriteRule ^(.*)/([^/\.]+)/?$ $1/indexFP.shtml?dynContent=$2 [L] 

但是,這不叫了整頁的正確頁面此一頁.....

當我http://example.com/dir1/oranges鍵入它使用index.shtml代替indexFP.shtml

有沒有辦法做到這一點?這是我現在擁有的。

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/([^/\.]+)/?$ $1/index.shtml?dynContent=$2 [L] 
RewriteRule ^(.*)/([^/\.]+)/?$ $1/indexFP.shtml?dynContent=$2 [L] 

有什麼建議嗎?

回答

0

[L]意味着mod_rewrite中的「last」。這將停止處理,以便您的indexFP規則永遠不會被擊中。

我認爲你正在嘗試做的是爲某些字符串選擇index,爲其他選擇indexFP。要做到這一點,你需要一種方法來選擇另一種規則。我的改寫福是有點生疏,但像這樣:

# match "oranges" 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /oranges/ 
RewriteRule ^(.*)/([^/\.]+)/?$ $1/indexFP.shtml?dynContent=$2 [L] 

# match everything else 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/([^/\.]+)/?$ $1/index.shtml?dynContent=$2 [L] 
+0

哇...這工程!有沒有辦法讓這個更具活力?我只是在想,這是特定的橙子......假設它是蘋果?試圖想出一個方法,它可以做到這一點,而不必在這裏輸入每一個,每次都必須重新啓動Apache。 – SteveL

+0

我認爲我能夠從你的例子中找出答案。 #匹配 「橘子」 的RewriteCond%{} REQUEST_FILENAME!-f 的RewriteCond%{} REQUEST_FILENAME!-d 的RewriteCond%{REQUEST_URI} /(.*)FP/? 重寫規則^(。*)/([^/\。] +)/ $ $ 1/indexFP.shtml?dynContent = $ 16 [L] #匹配一切 的RewriteCond%{} REQUEST_FILENAME!-f 的RewriteCond% {REQUEST_FILENAME}!-d RewriteRule ^(。*)/([^/\。] +)/?$ $ 1/index.shtml?dynContent = $ 2 [L] – SteveL

+0

對於動態查找,使用RewriteMap。當文件被修改時它自動重新加載映射文件,所以你不必重新加載Apache。 RewriteMap也可以讓你使用一個規則集而不是上面的「if-else」結構。 – TheCoolah