【问题标题】:htaccess experts: Redirect all but root to one TLD, redirect root to another TLD - WordPresshtaccess 专家:将除 root 之外的所有内容重定向到一个 TLD,将 root 重定向到另一个 TLD - WordPress
【发布时间】:2012-05-28 13:47:51
【问题描述】:

感谢大师的帮助。

我被要求将客户的 WordPress 主页放在一个 TLD(即 domain.eu)上,并将所有其他页面/目录 301 转换为不同的 TLD 扩展名(即 domain.com/everything-else)。不知道为什么要这样做,但显然这对客户很重要,我一直在努力让它工作。有什么想法吗?

示例:

如果 URL 命中任何域 TLD 的根,它们应该被重定向到 .eu 域 (http://domain.eu/),但其他所有内容都应该转到 .com 域 (http://domain.com /)

根源:

http://domain.com  OR
http://domain.net  OR
http://domain.edu/index.php OR
http://domain.org/index.html  OR
http://domain.* (* = any extension)

301 收件人: http://domain.eu

但是,其他所有内容都需要维护目录结构,并被重定向到其他 TLD (http://domain.com)。例子..

发件人:

    http://domain.net/blog/category

301 收件人:

    http://domain.com/blog/category

发件人:

    http://domain.org/blog/category/post

301 收件人:

    http://domain.com/blog/category/post

我尝试过的一切都以重定向循环告终,或者只是部分成功。例如,下面是 WordPress 重定向的上方,它正确重定向,因为所有目标 URL 都被命中,但根(主页)有一个重定向循环错误。有什么想法吗?

RewriteEngine On
RewriteBase /
Options +FollowSymLinks

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

RedirectMatch ^/$ http://domain.eu

RewriteCond %{REQUEST_URI} !^/$ [NC]
RewriteCond %{HTTP_HOST} ^domain.com.au$ [NC,OR]
RewriteCond %{HTTP_HOST} ^domain.eu$ [NC,OR]
RewriteCond %{HTTP_HOST} ^domain.de$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

我对 htaccess 有点陌生,所以请告诉我我是怎么解决这个问题的,谢谢!

【问题讨论】:

    标签: linux wordpress .htaccess redirect permanent


    【解决方案1】:

    尝试将重定向匹配替换为以下内容。

    RewriteCond %{HTTP_HOST} !^domain.eu$ [NC]
    RewriteRule ^/?$ http://domain.eu/ [R=301,L]
    

    【讨论】:

    • 不客气。 RedirectMatch 属于 mod_alias,而不是 mod_rewite。有时将两者混合会引起麻烦,因此最好避免这种情况。
    【解决方案2】:

    WordPress 将重定向任何与 WordPress 配置中的域不匹配的 URL。您需要编写一个 WP 插件或使用代理来获取其他域的主页。

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 2017-08-31
      • 2017-02-18
      • 2013-09-25
      • 2013-07-17
      • 2020-11-23
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      相关资源
      最近更新 更多