仅为子域编写301条规则

时间:2014-11-01 00:10:16

标签: regex apache .htaccess mod-rewrite redirect

我试图为一些旧的反向链接写一些301规则,这些规则将放在http://subdomain.domain.com内的 .htaccess 中(不在root .htaccess of domain.com)。

以下是我想要设置的某些类型的重定向,首先是特定规则,然后是全能回退。我很感激为这种逻辑编写正确的RewriteCond规则的一些建议,所有这些都有一个特定的最终URL重定向到:

  • A)请求包含 location = uae
    = 301到" http://www.domain.com/subfolder/sub2/sub3" (匹配模式,将所有内容重定向到特定最终到达网址,没有尾随斜杠)。

  • B)请求包含 searchTerms = someterm1
    = 301到" http://www.domain.com/subfolder2/program/url" (再次匹配一个特殊模式并将所有匹配重定向到一个没有尾部斜杠的特定最终URL)。

  • C)请求包含 reqGK = 755381 reqGK = 795971
    = 301至" http://www.domain.com/another/specific/url&#34 ; ...这个RewriteCond会有正则表达式的一部分,看起来像 reqGK =(755381 | 795971)我相信但我并不完全确定。

  • D)[ FALLBACK / CATCHALL 表示尚未与上述A-C匹配的所有请求]其他任何请求= 301至" http://www.domain.com/specific/url/forfallback" (从 subdomain.domain.com 发送所有剩余HTTP请求的最终特定URL引用。)

提前非常感谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

RewriteEngine On

RewriteCond %{QUERY_STRING} \blocation=uae\b
RewriteRule ^.*$            http://www.domain.com/subfolder/sub2/sub3 [L,R=301]

RewriteCond %{QUERY_STRING} \bsearchTerms=someterm1\b
RewriteRule ^.*$            http://www.domain.com/subfolder2/program/url [L,R=301]

RewriteCond %{QUERY_STRING} \breqGK=(755381|795971)\b
RewriteRule ^.*$            http://www.domain.com/another/specific/url [L,R=301]

RewriteRule ^.*$            http://www.domain.com/specific/url/forfallback [L,R=301]