Wordpress 将www重定向到非www并防止404错误页的301

Wordpress 将www重定向到非www并防止404错误页的301,wordpress,apache,.htaccess,redirect,Wordpress,Apache,.htaccess,Redirect,我在htaccess方面遇到问题,希望有人能帮助我: 我在/wordpress目录中安装了wordpress。因此,如果有人访问“www.mysite.com”或“mysite.com”,我想重定向到/wordpress 我在服务器上有一些网站,如/deleted.html 所以我添加了一个404错误页面:errordocument404/wordpress/404.php。 如果您访问mysite.com/deleted.html,404页面的所有功能都正常工作,但如果您访问www.mysit

我在htaccess方面遇到问题,希望有人能帮助我: 我在
/wordpress
目录中安装了wordpress。因此,如果有人访问“www.mysite.com”或“mysite.com”,我想重定向到
/wordpress

我在服务器上有一些网站,如
/deleted.html
所以我添加了一个404错误页面:
errordocument404/wordpress/404.php
。 如果您访问
mysite.com/deleted.html
,404页面的所有功能都正常工作,但如果您访问
www.mysite.com/deleted.html
,则无法正常工作。 在这种情况下,首先是301重定向,然后加载404页面。这对谷歌来说是个问题,因为他们无法检测到页面被删除。 这就是它的样子:

curl -I -L http://www.mysite.com/deleted.html

HTTP/1.1 301 Moved Permanently
Date: Tue, 24 Sep 2013 16:02:18 GMT
Server: Apache/2.2.25 (Unix)
Location: http://mysite.com/deleted.html
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 404 Not Found
Date: Tue, 24 Sep 2013 16:02:18 GMT
Server: Apache/2.2.25 (Unix)
X-Powered-By: PHP/5.2.17
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
X-UA-Compatible: IE=edge,chrome=1
Content-Type: text/html; charset=UTF-8
这是我的.htaccess

ErrorDocument 404 /wordpress/404.php

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteRule ^(/)?$ wordpress 
RewriteCond %{HTTP_HOST} ^(www.)?mysite.net$
RewriteRule ^(/)?$ wordpress 

非常感谢您提供的任何帮助。

将此代码放入您的.htaccess:

ErrorDocument 404 /wordpress/404.php

RewriteEngine On

# first redirect everything to http://mysite.com/net, recognized by WP permalink
RewriteCond %{HTTP_HOST} ^www\.(mysite\.(?:net|com))$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

# forward everything to wordpress folder
RewriteCond %{HTTP_HOST} ^mysite\.(com|net)$
RewriteRule ^$ wordpress [L]

这是因为WP中的
permalink
设置。最好总是将所有内容重定向到WP configured
http://mysite.com
首先,你说得对。永久链接设置是问题所在。我现在解决了这个问题,为Errorpage创建了一个静态html文件,并将其元重定向到我的wordpress 404页面<代码>但是现在用户可以看到静态页面一秒钟,然后重定向就发生了。因此,为了正确地完成这项工作,我需要解决永久链接问题。这更像是一个黑客解决方案。让我在我的答案中给你一些建议,如果你愿意,可以使用它。我的解决方案使用元重定向
mysite.com/deleted.html
www.mysite.com/deleted.html
mysite.com/wordpress/deleted.html
只返回404,但是对于
www.mysite.com/wordpress/deleted.html
我首先得到301,然后得到404,上面的规则按照建议执行
www.mysite.com/wordpress/deleted.html
将被重定向到
mysite.com/wordpress/deleted.html
首先(301),然后404将由
/wordpress/404.php
处理。不需要删除
deleted.html
,只是为了弄清楚
deleted.html
是已删除的文件。它在服务器上不存在,因此应该显示404页面。问题是,如果谷歌检查
www.mysite.com/wordpress/deleted.html
是否存在,服务器将首先返回301,然后返回404,如curl的输出所示。因此,尽管该文件已被删除,谷歌仍会认为该文件存在。这就是为什么我想避免在文件不存在的情况下从www.重定向到非www.的原因。如果任何搜索机器人获得404,它将不会认为文件存在(301在这里是不相关的),不幸的是,情况并非如此。如果我在网站管理员工具中使用“fetchasgoogle”,它会为不存在的url返回一个“success”。e、 g.
http://www.mysite.com/noexistent000.html
对于您的htaccess,但对于使用元重定向的我的解决方案,它显示“未找到”。