【问题标题】:Using htaccess to redirect all pages but one to another domain使用 htaccess 将除一个以外的所有页面重定向到另一个域
【发布时间】:2016-09-29 11:15:12
【问题描述】:

我的htaccess如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.es$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.es$
RewriteRule ^(.*)$ http://www.domain.com/es [L,R=301]

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

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?section=$1 [QSA,L]

基本上,它的功能是将所有域别名(即 domain.mobi)重定向到 domain.com,除了 domain.es,它将被重定向到 domain.com/es。然后还有另一个重写查询字符串(所以在后台,domain.com/test 变成了 domain.com/index.php?section=test)

我的问题是,现在我需要从重定向中排除一个 url (www.domain.es/landing)(所以它保留在 domain.es 中),但我无法让它工作。我已经尝试将此条件添加到前两个规则以排除页面:

RewriteCond %{REQUEST_URI} !^/landing$

但随后它转到 www.domain.com/es?section=landing(不仅仍然重定向到 domain.com;查询字符串出现在浏览器栏中)。有什么想法吗?

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite


    【解决方案1】:

    您可以使用这些规则:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.es$ [NC]
    RewriteCond %{THE_REQUEST} !/landing[\s?] [NC]
    RewriteRule ^(.*)$ http://www.domain.com/es/$1 [L,R=301]
    
    RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
    RewriteCond %{THE_REQUEST} !/landing[\s?] [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?section=$1 [QSA,L]
    

    【讨论】:

    • 这几乎行得通; www.domain.es/landing 仍然存在,但它显示了一个 404 页面,我想这是因为最后一条规则(带有 index.php 的那个)没有应用。
    • 感谢您的更新,但不,仍然无法正常工作,现在转到 www.domain.com/es/index.php?section=landing
    • 是的,效果更好,它保留在页面中并显示内容,但是现在所有图像和样式表都被破坏了,因为它们都重定向到 domain.com。我会尝试添加一些额外的 REQUEST_FILENAME 条件,看看它是否有效
    • 这是由于您的第二个重定向规则将不在domain.com 上的所有内容重定向到domain.com。如果您想跳过该规则中的文件/目录,请同时在该规则上添加 REQUEST_FILENAME 条件。
    • 在第一条规则之前添加它是有效的。非常感谢您的帮助!
    猜你喜欢
    • 2014-09-11
    • 2011-09-13
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    相关资源
    最近更新 更多