最初使用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
有什么见解?
答案 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;,因此用于规范化您的主域名,防止排名稀释在域的两个变体上具有重复内容。