2014-01-07 93 views
1

如何將「www.mydomain.com/pattern/pattern/value」重定向到「www.mydomain.com/pattern/value」? 使用:htaccess rewriteRule重複URI模式

RewriteRule ^pattern/(.*) /$1 [l,r,qsa] 

重定向到:www.mydomain.com/value,缺少格局目錄。

回答

0

感謝: 這是我最後的代碼

RewriteRule ^search/(.*)   search.php?q=$1 [qsa] 
RewriteRule ^search/images/(.*)  images/$1 
RewriteRule ^search/css/(.*)  css/$1 
RewriteRule ^search/search/(.*)  /search/$1?s [l,r] 
RewriteCond %{HTTP_REFERER} search/(.*) 
RewriteCond %{QUERY_STRINg} !^s$ 
RewriteRule ^search/(.*)   /$1 [l,r] 

我加入的S QUERY_STRING只在雙模式的情況下,爲了保持儘可能乾淨? HTTP_REFERER僅在鏈接來自包含查詢結果的頁面時才用於應用規則。

0

這是因爲規則是由於這個模式執行兩次:^pattern/(.*)

  1. 它匹配/pattern/pattern/value和重定向到/pattern/value
  2. 它再配/pattern/value,並重定向到/value

替換您的規則與此:

RewriteCond %{QUERY_STRING} ^$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^[^/]+/(.+)$ /$1?r [L,R] 
anubhava上指着我正確的方向
+0

它可以將「/ pattern/pattern/value」重定向到「/ pattern/value」,但它也可以將「/ pattern/value」重定向到「/ value」。 我需要的是從URL中刪除第一個「模式」,而不是第二個,如你的例子。你能幫助我嗎? – fcaserio

+0

我的規則是隻刪除第一個模式,因爲第二個模式是右邊再次使用的$ 1的一部分。 – anubhava

+0

然後我不知道我在做什麼錯。 www.mydomain.com/pattern/val 沒有重定向到 www.mydomain.com/val – fcaserio