正则表达式将非www重定向到www和子域重定向到文件

时间:2012-03-20 13:59:17

标签: regex url-rewriting subdomain isapi isapi-rewrite

我需要做以下事情..遇到了各种各样的例子,但我需要结合三个条件

重定向 1)重定向非www /非子域请求。例如:

http://xyzsite.comhttp://www.xyzsite.com

2)如果提到子域,则重定向。例如:

http://user1.xyzsite.comhttp://www.xyzsite.com/profile?user1

3)重定向到移动版。例如:

http://m.xyzsite.comhttp://www.xyzsite.com/m

技术细节: 我在IIS ver 6&使用helicontech isapi_rewrite模块

3 个答案:

答案 0 :(得分:0)

以下是ISAPI_Rewrite v3规则(希望这是您使用的版本):

RewriteBase /
RewriteCond %{HTTP_HOST} ^xyzsite\.com$
RewriteRule .? http://www.xyzsite.com [NC,R=301,L]

RewriteCond %{HTTP_HOST} ^m\.xyzsite\.com$
RewriteRule .? http://www.xyzsite.com/m [NC,R=301,L]

RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.xyzsite\.com$
RewriteRule .? http://www.xyzsite.com/profile?%1 [NC,R=301,L]

答案 1 :(得分:0)

1

  • 匹配:^xyzsite.com$
  • 重定向:www.xyzsite.com

2

  • 匹配:^(?!www.)(.*).xyzsite.com$
  • 重定向:www.xyzsite.com/profile?$1

3

  • 匹配:^m.(.*)$
  • 重定向:www.$1/m

答案 2 :(得分:-1)

我花了一些时间在这上面,希望能让你朝着正确的方向前进。除非您明确指定约束,否则我会提出最简单的解决方案。 这意味着我在正则表达式中硬编码xyzsite.com。这实际上是更多的解决方案

1)重定向非www /非子域请求。例如:http://xyzsite.comhttp://www.xyzsite.com

pattern:
http://(.*?.com)

replacement:
http://www.$1

2)如果提到子域,则重定向。例如:http://user1.xyzsite.comhttp://www.xyzsite.com/profile?user1

pattern:
(http://)(.*?)\.(.*)

replacement:
$1www.$3/profile?$2

3)重定向到移动版。例如:http://m.xyzsite.comhttp://www.xyzsite.com/m

pattern:
http://m\.(.*)

replacement:
http://www.$1/m

希望这有帮助,巴克利