【问题标题】:Url Rewrite issue in IIS MOD REWRITEIIS MOD REWRITE 中的 URL 重写问题
【发布时间】:2010-05-28 02:00:05
【问题描述】:

我在 mod-rewrite.txt 中有以下代码

RewriteEngine On
RewriteRule /\.htaccess$ - [F]

RewriteCond %{HTTP_HOST} !www\.espireinfo\.com$
RewriteRule ^(.*)$ http://www\.espireinfo\.com$1 [R=301,L]

RewriteRule ^/schools/index.aspx$   /schools/english-language.aspx [R=301,L]
RewriteRule ^/about/Contact.aspx$   /about/contact.aspx [R=301,L]

如您所见,上面使用 www.espireinfo.com 域进行重写。我希望将具有以下配置的另一个域 www.rai.com 写入同一个 mod-rewrite 文件中。

RewriteCond %{HTTP_HOST} !www\.rai\.com$
RewriteRule ^(.*)$ http://www\.rai\.com$1 [R=301,L]

RewriteRule ^/schools/index.aspx$   /schools/eng-lang.aspx [R=301,L]
RewriteRule ^/about/Contact.aspx$   /about/contactdetails.aspx [R=301,L]

所以我完整的 mod-rewrite.txt 文件将如下所示:

RewriteEngine On
RewriteRule /\.htaccess$ - [F]

RewriteCond %{HTTP_HOST} !www\.espireinfo\.com$
RewriteRule ^(.*)$ http://www\.espireinfo\.com$1 [R=301,L]

RewriteRule ^/schools/index.aspx$   /schools/english-language.aspx [R=301,L]
RewriteRule ^/about/Contact.aspx$   /about/contact.aspx [R=301,L]

RewriteCond %{HTTP_HOST} !www\.rai\.com$
RewriteRule ^(.*)$ http://www\.rai\.com$1 [R=301,L]

RewriteRule ^/schools/index.aspx$   /schools/eng-lang.aspx [R=301,L]
RewriteRule ^/about/Contact.aspx$   /about/contactdetails.aspx [R=301,L]

我试过了,但它只响应第一个域 www.espireinfo.com

是否可以在同一个 mod-rewrite.txt 文件中控制两个具有相同重写规则的域。

请建议我可以做些什么来解决这个问题。非常感谢您的帮助!

【问题讨论】:

  • 能否请您说明您使用的重写工具。是 Apache mod-rewrite 还是其他?
  • 我正在使用IIS MOD重写Micronovae公司的产品

标签: url mod-rewrite


【解决方案1】:

您希望一台服务器默认充当两台不同的服务器,但它不能这样做。

您必须选择一个作为 301 重定向的默认值。然后只保留其中一个部分。

然后在页面重写时添加正确的条件。因此,espireinfo 是默认值

RewriteEngine On
RewriteRule /\.htaccess$ - [F]

# espireinfo is the default server
RewriteCond %{HTTP_HOST} !www\.espireinfo\.com$
RewriteCond %{HTTP_HOST} !www\.rai\.com$
RewriteRule ^(.*)$ http://www\.espireinfo\.com$1 [R=301,L]

# espireinfo.com rewrites
RewriteCond %{HTTP_HOST} www\.espireinfo\.com$
RewriteRule ^/schools/index.aspx$   /schools/english-language.aspx [R=301,L]
RewriteCond %{HTTP_HOST} www\.espireinfo\.com$
RewriteRule ^/about/Contact.aspx$   /about/contact.aspx [R=301,L]

# rai.com rewrites
RewriteRule ^/schools/index.aspx$   /schools/eng-lang.aspx [R=301,L]
RewriteRule ^/about/Contact.aspx$   /about/contactdetails.aspx [R=301,L]

除非我弄错了您的域名重写,即如果您实际上是在尝试强制使用 www 前缀。

【讨论】:

  • 谢谢西蒙!我对 espireinfo 有一大堆重写规则,而对 rai 有一些重写规则。我是否需要在每次为 espireinfo.com 重写 url 之前写 RewriteCond %{HTTP_HOST} www\.espireinfo\.com$,那么 www.rai.com url 重写呢
  • 没错,rai.com 规则也应该有一个 Cond。由于 espireonfp.com 仍在阅读这些规则。但是如果你有大量的规则,这是一个剪切粘贴的工作,另一种选择可能是将所有简单的重写放在一个重写映射中,那么你只需要一个 Cond 就可以了。 httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritemap
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多