2017-03-01 102 views
0

我想重定向通過國防部重寫的訪問我的網址之一,只有在請求不具有我的網站作爲一個引用,但我要排除一個帶參數的具體網址。包括和排除正則表達式對mod重寫

這是我的規則今日(其中工程重定向):

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_METHOD} GET 
    RewriteCond %{REQUEST_URI} .*profile/login* 
    RewriteCond %{HTTP_REFERER} !^http(s)?://example.com(/)?.*$  [NC] 
    RewriteCond %{HTTP_REFERER} ^$ 
    RewriteRule ^(.*)$ https://example.com/ [R=307,L] 
</ifModule> 

但我想下面的網址不被重定向:

https://example.com/profile/login/?my_param=my-param-value&key=XXXXXXX

我不手之前知道查詢字符串值,只是查詢字符串名稱。

我怎樣才能排除規則的網址是什麼?

謝謝

問候,

GV

回答

0

我一直在用我的.htaccess中的條件,以排除具有特定的查詢字符串參數和值的網址。

的RewriteCond%{QUERY_STRING}!(^ | &)rcp_action = lostpassword_reset($ | &)

考慮您的重寫規則,我想補充一個新行檢查%{QUERY_STRING}條件如下:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_METHOD} GET 
    RewriteCond %{REQUEST_URI} .*profile/login* 
    RewriteCond %{HTTP_REFERER} !^http(s)?://example.com(/)?.*$  [NC] 
    RewriteCond %{QUERY_STRING} !(^|&)rcp_action=lostpassword_reset($|&) 
    RewriteCond %{HTTP_REFERER} ^$ 
    RewriteRule ^(.*)$ https://example.com/ [R=307,L] 
</ifModule> 

在你的情況,你需要你的參數名稱my_param更換rcp_action,以及lostpassword_reset你的參數值,my-param-value

我在我自己的網站SlideModel測試這一點,將用戶重定向到給出了基於查詢字符串參數一定的條件下維護頁面。