2012-11-21 47 views
0

我想將用戶重定向到通用註冊頁面(如果它們沒有在URL中使用語言環境)以及特定註冊頁面(如果使用語言環境)。出於某種原因,下面是不行的,讓我知道如何解決:apache重寫語言環境特定頁面的規則

RewriteCond %{QUERY_STRING} source=actp 
RewriteRule ^/(en|de|fr|zh|ja|jp|ko|kr)/web/login/registration $1/web/login/registration? [R=301,L] 

RewriteCond %{QUERY_STRING} source=actp 
RewriteRule /web/login/registration /web/login/registration? [R=301,L] 

例如:基於

Before: website.com/web/login/registration 
after: website.com/web/login/registration?source=actp 
before: website.com/kr/web/login/registration 
after: website.com/kr/web/login/registration?source=actp 
+0

已在Apache的conf文件或本的.htaccess重寫規則?你只是想在URL的末尾添加一個'?'嗎? –

+0

重寫規則位於redirects.conf文件中。第二個的意圖是重定向到通用註冊頁面,如果他們到達沒有區域 – Swaroop

+0

我還需要添加?到網址的末尾,是的 – Swaroop

回答

0

在你面前/ URL的之後,您使用的是的RewriteCond錯在這裏。在評估RewriteRule之前,它會預期查詢字符串source=actp匹配。由於您之前的URL沒有這樣的查詢字符串,所以RewriteRule甚至不會被評估。這裏根本不需要RewriteCond。

試試這個:

RewriteRule ^/?((en|de|fr|zh|ja|jp|ko|kr)/)?web/login/registration$ /$2web/login/registration?source=actp [R=301,L] 
+0

因此$ 2之後沒有斜線? – Swaroop

+0

@Swaroop不,斜槓包含在捕獲的模式中。這就是爲什麼我使用$ 2而不是$ 1 –

+0

@Swarrop我使用0或1代替整個語言代碼+ URL部分,這樣只需要一個規則。還在開始處添加了「^ /?',以便其他人將來可以在服務器上下文(.conf文件)或目錄上下文(.htaccess)中使用此答案。爲了您的目的,您可以輕鬆地將'^ /?'替換爲'^ /'。 –