301将所有内容重定向到新网站的根/整个网站,包括子页面?永久移动

时间:2013-03-01 22:04:47

标签: .htaccess redirect mod-rewrite http-status-code-301

快速更新

好的,到那儿 这是mod_alias吗?

RedirectMatch 301 ^/ http://brightmist.co.uk/

我已在所有内容中添加了这一行代码并且它似乎正常工作,但是我的其他目录(例如http://brightmist.co.uk/blog/2013/02/23/manchester-art-gallery-feb-2013)告诉谷歌这些页面已暂时移动 - 请参阅http://www.internetofficer.com/seo-tool/redirect-check/

这是否意味着我必须通过我的网站,并添加重定向的基调?


原始问题

我有一个新网站。 我想将所有旧网站链接从http://artygirl.co.uk重定向到我的新网站http://brightmist.co.uk/

我主要是一名拥有多年使用Photoshop,CSS,HTML,Wordpress和jQuery经验的设计师,但我对编辑htaccess文件等内容并不了解。而且我不想弄错,因为它意味着谷歌排名下降等等。

有没有人知道我可以粘贴到我的htaccess文件底部的任何脚本,我希望它将网站上的所有链接/页面重定向到与以前相同的位置。例如,如果我输入http://artygirl.co.uk/buy-art-prints-cheshire/我希望它转到http://brightmist.co.uk/buy-art-prints-cheshire/我正在使用相同的主机,他们只是重新指向了域

除了我的主机最近添加了以下代码之外,我假设这也与域映射有关,这里也是我的整个htaccess文件 -

ErrorDocument 401 /forms/401.html
ErrorDocument 403 /forms/403.html

RewriteEngine On
RewriteBase /

#uploaded files
RewriteRule ^(.*/)?files/$ index.php [L]
RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
RewriteRule ^(.*/)?files/(.*) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteCond %{REQUEST_URI} ^.*/wp-admin$
RewriteRule ^(.+)$ $1/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

<IfModule mod_security.c>
<Files async-upload.php>
SecFilterEngine Off
SecFilterScanPOST Off
</Files>
</IfModule>

<Files 403.shtml>
order allow,deny
allow from all
</Files>

deny from 218.143.4.127
deny from 143.90.221.204
deny from 95.135.78.190
deny from 114.108.150.74
deny from 95.135.111.205
deny from 91.124.239.150
deny from 94.178.2.93
deny from 91.124.206.118
deny from 91.124.226.116
deny from 118.98.32.34
deny from 94.180.252.133
deny from 58.27.140.58
deny from 77.93.197.83
deny from 88.191.63.27

# Hotlink Protection START #

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?brightmist.co.uk [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

# Hotlink Protection END #

3 个答案:

答案 0 :(得分:5)

  

我想将我的所有旧网站链接从 http://artygirl.co.uk/ 重定向到我的新网站 http://brightmist.co.uk/

有几种方法可以实现这一点,所有这些方法都应该在http://artygirl.co.uk/根目录中的一个.htaccess文件中实现。

无需检查传入域,因为它必须是artygirl.co.uk,其中包含.htaccess文件。

要使用以下任何选项,请将相应的指令或规则集复制粘贴到http://artygirl.co.uk根目录中的一个 .htaccess文件中。


最快的一个是使用一个mod_alias指令的简单重定向:

Redirect 301 /  http://brightmist.co.uk/

传入网址中的任何路径都会自动附加到重定向的网址。


使用另一个mod_alias指令仅重定向某些路径:

RedirectMatch 301 ^/(.*)  http://brightmist.co.uk/$1

虽然此示例重定向了所有内容,但可以修改正则表达式^/(.*)以仅匹配特定的URL路径模式。


使用mod_rewrite指令仅重定向某些路径:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)   http://brightmist.co.uk/$1  [R=301,NC,QSA,L]

与上一个选项一样,尽管此规则集会重定向所有内容,但可以修改正则表达式^(.*)以仅匹配特定的URL路径模式。


备注

  • http://artygirl.co.uk/中的http://brightmist.co.uk/中必须存在相同的目录结构和文件,以便以前的任何选项都可以使用。

  • 如果问题中的实际.htaccess文件按预期工作,则可以在安装新WP的http://brightmist.co.uk/根目录中使用它。但是,可能需要进行一些修改。

  • 要移动或复制WP安装,请检查此链接Changing the site URL


更新

从评论中的这些句子到这个答案:“我的域名都指向同一个目录...... ”和“ ...现在它创建了一个循环... < / em>“,也许问题是关于指向相同内容(网站)的域名,通常称为parked域名。

如果是这种情况,我不确定在.htaccess中将主域重定向到停放的域只是更改浏览器地址栏中的域名的正确方法。

但是,理论上这样的事情应该使用mod_rewrite指令:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST}  artygirl\.co\.uk      [NC]
RewriteRule ^(.*)   http://brightmist.co.uk/$1  [R=301,NC,QSA,L]

永久重定向从http://artygirl.co.ukhttp://brightmist.co.uk的所有请求,并在存在时附加完整的传入路径和查询。

由于.htaccess文件也是共享的,我认为这个规则集应该放在问题的.htaccess文件的顶部,取代以下几行:

RewriteEngine On
RewriteBase /

答案 1 :(得分:0)

他们是否重定向到同一个分机?应该是这样的:

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

答案 2 :(得分:0)

我看到了问题。它重定向根,但如果我去:

http://artygirl.co.uk/photography/

我想你想要它去

http://brightmist.co.uk/photography/

而不是

http://brightmist.co.uk/

目前的情况。

重写规则非常难以调试,但试试这个......

RewriteEngine On
RewriteBase  /
RewriteCond %{HTTP_HOST} !^brightmist\.co\.uk$ [NC]
RewriteRule ^(.*)$ http://brightmist.co.uk/$1 [R=301,L]

我知道这与Matthew Camp的回答非常相似。 RewriteCond对于避免无限循环非常重要,因为您从同一文件夹中提供两个域。您只想重定向不正确的那个。

可能还需要重写Base,具体取决于服务器的配置方式以及更高级别存在的其他重写规则(对您而言不可见,但可能仍会对您造成影响)。尝试使用和不使用RewriteBase。

我希望这会有所帮助。