2017-05-08 81 views
1

我需要URL將大寫URL寫爲小寫。重寫URL以排除某些HTML文件

我得到了那部分工作。

但是,我有問題。我很感興趣,從上述*.html?vs=12312312

排除我嘗試了以下內容:

RewriteCond %{REQUEST_URI} !^.*\.(html\?vs=) [NC] 

但沒有奏效。

http://foo.com/com.foo.bar/content/Any.html?vs=12312312 

上面應該保持原樣,而不是重寫。

上述規則有什麼問題?什麼應該是正確的語法?

更新

我試過如下:

RewriteCond %{REQUEST_URI} !(.*\.html\?vs=.*)$ [NC] 

但仍沒有運氣。

回答

1

查詢字符串不是REQUEST_URI的一部分,它存儲在QUERY_STRING中。因此,嘗試這樣的事情,肚裏現有的規則之前:

RewriteCond %{REQUEST_URI} \.html$ 
RewriteCond %{QUERY_STRING} ^vs=[^&=]+$ 
RewriteRule^- [L] 

你需要做這種方式(它自己獨立的規則)的原因,而不是把排除現有的規則上,是因爲你不能和RewriteCond的負值匹配,因此如果只有一個應用(.html或?vs = nnn),將它們放在現有規則中作爲負值匹配將阻止其運行。當兩者都適用時拒絕,你需要在這樣一個單獨的正面匹配中進行。

如果您有需要申請在此之後這些網址,看看[S=1]標誌(documentation),這將跳過匹配下一條規則,而不是[L]它說停止比賽後處理在這裏(和其他規則因此不要將這些URL的後續規則應用於此)。

規則RewriteRule^-只是說不改變任何東西,它用來只應用標誌的效果。

+0

感謝您的詳細解釋!我應該如何更改字符串的vs = \ d + $。即:vs = v123423?謝謝。 – DarthVader

+0

我改變它允許任何東西作爲價值,只有它必須有一個,讓我知道,如果這不是你想要的。 – SuperDuperApps

相關問題