2013-03-14 52 views
0

我試圖創建一個重寫規則,它將忽略任何其他URL查詢/參數,並只是基於路徑重定向。Apache重寫規則,忽略查詢/參數,始終基於路徑重定向

我的公司有一個Wifi Hotspot服務,它可以執行一些DNS路由技巧,強制用戶在使用之前先登錄。不幸的是,當人們獲得從WiFi斷開,並回落到正常細胞的數據服務,有時一個URL請求仍然被髮送到我們的主機,它顯示爲:

www.ourwebsite.com/login?dst=http://www.google.com/m?client=ms-android-verizon&source=android-home 

我已經寫了一套規則,以護理/登錄和/登錄/的基路徑重定向到我們的主頁,

RewriteCond %{THE_REQUEST} ^.*\/login/\ HTTP/ 
RewriteRule ^(.*)login/?$ "/$1" [R=301,L] 
RewriteCond %{THE_REQUEST} ^.*\/login\ HTTP/ 
RewriteRule ^(.*)login?$ "/$1" [R=301,L] 

,但我有想出適當的字符串麻煩始終重定向路徑上souly爲主,而忽略任何查詢參數可能會或可能不會來。

任何幫助將不勝感激!提前致謝。

回答

1

如果我的理解沒錯,這樣的事情應該這樣做:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteRule ^login /? [R=301,L] 

此規則集將重定向只要以root身份進入的網址是一樣的東西:

http://www.ourwebsite.com/login?any_query

+0

啊,很好!是的,這正是我所要找的,謝謝一堆! – 2013-03-15 16:16:10

0

從Apache 2.4.0開始,您可以將QSD -flag應用於規則。

當請求的URI包含查詢字符串,並且目標URI沒有時,RewriteRule的默認行爲是將該查詢字符串複製到目標URI。使用[QSD]標誌會導致查詢字符串被丟棄。 - https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsd

當使用此標誌爲早期Apache的版本,你會引起500 Internal Server Error