WordPress中的301重定向循环

时间:2014-02-03 21:24:45

标签: wordpress .htaccess redirect

最初使用301重定向www.example.com/→www.example.com/wp

不幸的是,我没有阅读所有'不要使用301,除非你100%确定它是永久的',现在我需要恢复原来的域名。

首先,我尝试在管理员短划线中的设置/常规中进行常规站点url / wordpress url更改。保存在具有原始301重定向的根上的旧.htaccess上。没用。

我已将所有内容移至根目录,因为我收到了“此网页是重定向循环”错误页面。清除所有浏览器上的缓存。仍然得到重定向循环错误页面。

在此处检查了我的网址重定向:http://www.digitalcoding.com/tools/url-redirect-check.html

我有两个提示,第一个是正常,第二个是红色的大胖X:
301永久移动:www.example.com/→www.example.com
301检测到另一个重定向:www.example.com

.htaccess看起来像这样:

#Use PHP 5.4
AddType application/x-httpd-php54 .php
<IfModule mod_suphp.c>
suPHP_ConfigPath /opt/php54/lib/php.ini
</IfModule>
ErrorDocument 401 default
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

有什么见解?

1 个答案:

答案 0 :(得分:2)

  

重定向301 / http://www.example.com/   你得到一个无限循环,因为该代码中没有任何内容告诉它不要将www.example.com重定向到自己。

你是不对的,你不能使用Redirect指令,这就是原因;它是无条件的,会在您描述的场景中产生循环。

为了防止循环,您必须找到一种方法来告诉代码不要将www.example.com重定向到自身。这可以通过使用mod_rewrite,特别是mod_rewrite中的RewriteCond指令来测试请求的主机名并相应地采取行动:

 Options +FollowSymLinks -MultiViews
   RewriteEngine on
   #
   # if requested hostname is non-blank
   RewriteCond %{HTTP_HOST} .
   # and if requested hostname is NOT "www.example.com"
   RewriteCond %{HTTP_HOST} !^www\.example\.com
   # redirect to same object in correct domain
   RewriteRule (.*) http://www.example.com/$1 [R=301,L]

您的服务器上可能需要也可能不需要第一个指令Options。如果不需要,实际上可能不允许。评论你有麻烦。

第二个指令RewriteEngine在mod_rewrite代码的顶部需要一次(并且只需一次)。

只有在不使用基于名称的虚拟(共享)服务器时才需要第三个指令,即第一个RewriteCond。如果客户端没有发送&#34; Host&#34;它会阻止无限循环。标题及其请求。由于没有&#34; Host&#34;无法访问基于名称的虚拟服务器。 header,在基于名称的虚拟服务器上不需要此行。除非需要一点时间来处理它,否则不会有任何伤害。

请注意,此代码也会重定向&#34; example.com&#34;到&#34; www.example.com&#34;,因此用于规范化您的主域名,防止排名稀释在域的两个变体上具有重复内容。