【问题标题】:Complex .htaccess redirect advice复杂的 .htaccess 重定向建议
【发布时间】:2015-09-10 18:04:59
【问题描述】:

我想将所有访问旧域页面的用户重定向到新域中的同一页面(只有域名正在更改)。

如果我的旧域是 www.OLDDOMAIN.com 而我的新域是 www.NEWDOMAIN.com,那么我希望能够将访问 www.OLDDOMAIN.com/c/123/Page-Name 的访问者重定向到 www。 NEWDOMAIN.com/c/123/Page-Name(请注意,这些是 SEO 友好的 URL,而不仅仅是子目录或文件名)

但是,我不希望这条规则适用于来自特定 IP 地址的访问者(比如说 2 个 IP 地址 123.123.123.123 和 345.345.345.345 - 我很欣赏这些无效)。

我还想确保所有子域,例如files.OLDDOMAIN.com 不会重定向到 files.NEWDOMAIN.com

并且我希望能够向此规则添加排除项。例如。我希望继续能够访问 www.OLDDOMAIN.com/index.php 或子文件夹,例如www.OLDDOMAIN.COM/admin/

需要这样做的原因是当前位于 www.OLDDOMAIN.com 的网站正在移动到 www.NEWDOMAIN.com。并且 www.OLDDOMAIN.com 正在被重新用于另一个网站。我需要重定向的原因是保留搜索引擎排名,至少在新网站建立之前。因此,解决方案需要对 SEO 友好。

对于没有提供任何代码提前致歉,但我不完全确定从哪里开始...

【问题讨论】:

    标签: .htaccess mod-rewrite redirect


    【解决方案1】:

    您可以在DOCUMENT_ROOT/.htaccess 文件中使用此代码:

    RewriteEngine On
    
    # exclude these IPs
    RewriteCond %{REMOTE_ADDR} !^(123\.123\.123\.123|345\.345\.345\.345)$
    
    # exclude these URIs
    RewriteCond %{REQUEST_URI} !^/(/index\.php|admin/) [NC]
    
    # exclude sub-domains
    RewriteCond %{HTTP_HOST} ^(www\.)?OLDDOMAIN\.com$ [NC]
    
    # redirect to new host
    RewriteRule ^ http://www.NEWDOMAIN.com%{REQUEST_URI} [R=302,L,NE]
    

    【讨论】:

    • 优秀。感谢您的回答。现在,如果我有大约 1000 个独特的页面。将这些列为单独的 302 重定向或使用您的解决方案会更好吗?我只是在考虑将来有关错误页面(404 等),因为如果访问者被直接重定向到新域,这些显然不起作用?另外,您认为这会提高还是降低网站的速度?
    • 您的意思是要从该重定向中排除 1000 个页面,还是要将这 1000 个唯一页面重定向到新域?
    • 我只想将 1000 个唯一页面重定向到新域
    • 我想我更喜欢使用您的原始解决方案,但我只是想知道您认为哪个选项最好......
    • 我认为使用RewriteMap 可能比使用 1000 条重定向规则更好(如果您可以访问 Apache 配置)。
    猜你喜欢
    • 1970-01-01
    • 2012-10-19
    • 2015-02-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2015-04-24
    • 2021-07-10
    • 2013-02-05
    相关资源
    最近更新 更多