2016-01-22 26 views
1

在此先感謝Web服務器的URL重定向循環

是做Web服務器URL重定向(httpd.conf文件),試圖將URL從

重寫規則^/WPS重定向/(.*)/保險/醫院爲

現金收益http://hostname/wps/ $ 1 /零售 - 銀行/保險/醫院爲現金收益[L,R = 301]

當我試圖擊中老一新的URL我得到的波紋管網頁瀏覽器錯誤「 這個網頁年齡有重定向循環「

http://hostname/wps/portal/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/零售銀行/保險/醫院現金 - 效益

輸出是這樣的我不知道爲什麼得到這個循環錯誤,我清除了所有緩存歷史記錄中的每一件事情,但仍然錯誤退出。

+1

它可能是網站上的格式,但我看不到您的預期來源和目標網址。請你可以提供這些,以便我可以計算出正則表達式在做什麼。 –

+1

我需要一個實際的源URL和實際預期的URL的例子。您的重寫規則會匹配您的舊網址和您的新網址,這就是爲什麼它正在循環。如果你能給我看一箇舊的URL和一個新的URL,那麼我可以制定一條規則來匹配舊的但不是新的規則 –

回答

2

嚴格說到「循環」問題。如果我正確地閱讀了你的RewriteRule,那麼你的替換(目標URI)看起來就像它會匹配你的模式......並且這將解釋循環。在這種情況下,通常的做法是在返回時使用RewriteCond忽略替換(目標URI)。似乎唯一替代的是/ retail-banking /部分。因此,也許試試這個:。

的RewriteCond%{REQUEST_URI} + /零售銀行/

這將需要直接去你的重寫規則

修訂以上 - 跳過標記示例:

RewriteCond%{REQUEST_URI}。+/retail-banking/
RewriteRule。? - [S = 50]
重寫規則1
重寫規則2
......
重寫規則50

+1

要讓一個RewriteCond適用於多個RewriteRules,你必須否定(反向)RewriteCond並使用用skip標誌引導RewriteRule。這假設你想要應用條件的所有RewriteRules被分組在一起並且立即跟隨。我編輯了我的答案以包含一個示例。跳過標誌記錄在這裏:https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_s –

+1

@VinodKumarP,這已經從你最初的問題發展了很多,可能需要諮詢超出範圍這個線程/論壇。重要的是,您需要花時間瞭解這些示例的工作方式,以便您可以將它們應用並定製到您自己的配置中(如果需要,請參閱文檔)。你之前說過,如果你在Cond上面添加了「每個URL都不起作用,那麼URL正在工作」。使用跳過選項將有效地做同樣的事情。確保你的RewriteRules是有序的,這樣只有那些需要應用Cond的人才會在跳過分組 –

+0

@VinodKumarP。請在新問題下提交最新的問題。這是你問到的第四個問題:1.如何修復重寫循環。 2.如何將RewriteCond應用於多個規則。 3.使用跳過標誌不能正確顯示頁面。 4.重寫替換中缺少%編碼。這些都很好,但它們需要作爲單獨的問題提交。 –

0

所以,你是想從這個網址獲得:

主機名/ WPS /門/保險/醫院現金收益

這個網址:

主機名/ WPS /門/零售銀行/保險/醫院現金收益

它們基本上是一樣的,只不過你的新人有一個額外的「零售銀行」級別。 /(.*)/匹配任何字符,包括「/」和其他字母。所以它會匹配/門戶/和/門戶/零售銀行和/門戶/零售銀行/零售銀行,這就是爲什麼你有重定向循環。

爲什麼不把整個網址放入?爲什麼你甚至會放入通配符搜索,因爲它是如此具體?如果由於某種原因確實需要匹配基準網址,則應該指定您期望的字符數和您期望的級別數,而不是通配符搜索,如下所示:

^/wps /([A-z0這將匹配所有字母字符,所有數字字符和「 - 」字符,但不匹配「/」。您可以在URL中輸入的唯一其他字符是「%」,但除非您有一些需要轉義的奇怪字符,否則很可能不需要這些字符。該模式僅期望/ wps /和/ insurance /之間的一個級別,因此它不會與新網址匹配。試試看,如果您因爲有其他網址需要重定向而困擾該模式,請嘗試regexpal,啓用多行,然後您可以粘貼多個網址,並確保只有您想要匹配的網址。

+0

所以你輸入的規則是 ^/wps /([A-z0-9 \ - ] *)/ insurance/hospital-cash-benefit http:// hostname/wps/$ 1/retail- banking/insurance/hospital-現金收益 我看到,當複製和粘貼一個短跑沒有逃脫 –