【问题标题】:301 All aspx files to a Subdomain301 所有 aspx 文件到子域
【发布时间】:2010-05-04 14:45:11
【问题描述】:

我们刚刚为 EE 中的客户重新设计了一个站点,该站点位于 example.com(带有和不带有 www.)。他们的原始网站是 ASPX。他们仍然有许多想要保留的 ASPX 页面,因此他们的 IT 人员创建了一个子域 www2,这基本上是他们旧网站的克隆。

我需要一个 htaccess 规则来检查请求的页面是否以 .aspx 结尾,然后重定向到 www2 子域。它还应该确保请求的页面不存在

我尝试使用以下规则,但它不起作用。

RewriteRule ^http://[www\.?]example.com/(.*)\.aspx$ http://www2.example.com/$1 [R=301,L]

我的 htaccess 文件(包括上述规则)如下所示:

RewriteEngine On

# redirect all .aspx pages to www2
RewriteRule ^http://[www\.?]example.com/(.*)\.aspx$ http://www2.example.com/$1 [R=301,L]

# strip index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

有人对此有解决方案吗?

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    RewriteRule directive 只测试URL path。如果你想测试请求的 URL 的任何其他部分,你需要使用RewriteCond directive

    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
    RewriteRule ^(.*)\.aspx$ http://www2.example.com/$1 [R=301,L]
    

    【讨论】:

    • 实际上,这个解决方案存在一个问题:它会从 URL 中去除 .aspx。我通过在 $1 之后添加 .aspx 来修复
    • @Jazzerus:您也可以使用此规则:RewriteRule ^.+\.aspx$ http://www2.example.com/$0 [R=301,L]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多