IIS MOD REWRITE中的URL重写问题

时间:2009-07-17 05:50:39

标签: url mod-rewrite

我在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文件中控制具有相同重写的两个域。

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

1 个答案:

答案 0 :(得分:0)

默认情况下,您希望一台服务器表现为两台不同的服务器,它无法做到这一点。

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

然后在页面重写上添加正确的条件。因此espireinfo是defualt

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前缀。