【问题标题】:.htaccess to redirect to new domain.htaccess 重定向到新域
【发布时间】:2015-08-08 04:50:12
【问题描述】:

我想将现有域重定向到新域(机器人站点结构相同)我尝试在 .htaccess 中关注

RewriteEngine on 
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

我的问题是,如果我尝试

olddomain.com/login.php

它重定向到

newdomain.com/public_html/login.php

这不起作用..任何人都可以帮助解决它。

(注意:如果我只尝试域名,它会完美地重定向到新域)

【问题讨论】:

  • 这只是影响login.php的东西吗?还是olddomain.com/<anything> 重定向到newdomain.com/public_html/<anything>?尝试重定向到 any 其他域,您仍然在目标 URL 中获得 public_html 吗? (注意:测试 302 重定向,因为它们没有被缓存 - 301 重定向被浏览器缓存,所以你必须确保你一直清除缓存!)

标签: apache .htaccess mod-rewrite


【解决方案1】:

只需将您的新域指向站点根文件夹,而不是您的服务器根文件夹。

【讨论】:

    【解决方案2】:

    那么你可以使用这个RewriteRule指令:

    RewriteRule ^public_html/(.*)$ http://www.newdomain.com/$1 [R=301,L]
    

    它只会反向引用正则表达式(.*),不包括“public_html/”


    很高兴看到解决您问题的完整指令。无论如何,您可以通过替换以下 3 行来改进和优化它们:

    RewriteCond %{HTTP_HOST} ^olddomain\.tld$ [OR]
    RewriteCond %{HTTP_HOST} ^www\.olddomain\.tld$
    RewriteRule ^(.*)$ "http\:\/\/www\.newdomain\.tld\/$1" [R=301,L]
    

    这两行:

    RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.tld$
    RewriteRule ^(.*)$ http://www.newdomain.tld/$1 [R=301,L]
    

    在我看来,这是写它们的完美方式..

    【讨论】:

    • 会导致发布数据出现问题
    • @ChiragNandaniya 怎么样?
    【解决方案3】:

    在与服务提供商讨论后,根据他们的指示,我使用了以下代码,效果很好(根据他们的虚拟专用服务器信息是特殊情况)

    感谢所有努力解决我的问题的人

    RewriteEngine on
    RewriteOptions inherit
    RewriteCond %{HTTP_HOST} ^olddomain\.tld$ [OR]
    RewriteCond %{HTTP_HOST} ^www\.olddomain\.tld$
    RewriteRule ^(.*)$ "http\:\/\/www\.newdomain\.tld\/$1" [R=301,L] 
    

    【讨论】:

    • 如果你想看到你的指令的改进版本,你可以查看我的更新..
    • 感谢您的反馈。唯一重要的是RewriteOptions inherit 指令。这是不寻常的。这意味着他们在文件系统路径的 .htaccess 中使用 mod_rewrite 以看似“更正”文档根目录(mod_rewrite 指令通常不会被继承)。 (TBH 当你看到 RewriteRule 替换格式的格式确实让你思考他们是否真的知道他们在做什么。)
    猜你喜欢
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2012-10-13
    相关资源
    最近更新 更多