【问题标题】:301 redirect everything to new website root/whole site including sub pages? Moved Permanently301 将所有内容重定向到新网站根/整个网站,包括子页面?永久移动
【发布时间】:2013-02-16 12:55:21
【问题描述】:

快速更新

好的,到了 这是 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 #

【问题讨论】:

  • 您为什么不尝试在http://artygirl.co.uk 的.hataccess 文件中进行重定向。像这样:Redirect 301 / http://brightmist.co.uk/ 我看不出使用mod_rewrite 的原因,至少不是从你的问题来看,mod_alias 更快且易于使用。
  • 感谢您的评论。请您进一步解释一下。该站点位于同一主机/位置我想这就是它循环的原因?请您发布完整的代码。我是一名设计师,所以对 htaccess 编码一无所知。
  • 不过,这是另一个域。我的建议是在旧站点根目录的 .htaccess 文件中只使用一行。像这样:Redirect 301 / http://brightmist.co.uk/,这就是您需要将所有内容重定向到http://brightmist.co.uk/,包括 URL 路径和查询。当然,在新站点中,旧的目录结构和文件必须存在。
  • 不,抱歉,主机已重命名为brightmist.co.uk,artygirl.co.uk 已映射/重定向到这个新主机brightmist.co.uk。我的 301 工作正常(见下面的答案),但它没有重定向所有链接?我可以添加一些 htaccess 代码吗?
  • 这正是我要说的。尝试使用mod_alias(在我的评论中)而不是mod_rewrite(在你的答案中)。它要快得多。是的,谷歌将赶上永久重定向 (301)。

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


【解决方案1】:

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

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

无需检查传入域,因为它必须是 .htaccess 文件所在的 artygirl.co.uk

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


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

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

传入 URL 中的任何路径都将自动附加到重定向的 URL。


使用另一个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


更新:

从您对这个答案的评论中的这些句子:“我的域都指向同一个目录......”和“......现在它创建了一个循环......”,也许问题是关于指向相同内容(网站)的域,通常称为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.uk 永久重定向到http://brightmist.co.uk,并在存在时附加完整的传入路径和查询。

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

RewriteEngine On
RewriteBase /

【讨论】:

  • 哇,谢谢 Faa,我很困惑。我的域都指向同一个目录。这在昨晚有效 - RedirectMatch 301 ^/ brightmist.co.uk,但现在它创建了一个循环,虽然奇怪的是我的第一篇博客文章似乎正确重定向。我网站中的代码已恢复为 mod_rewrite。我想没有办法确保链接都重定向为 301,所以我必须将它们作为 mod_rewrite 单独进行。谢谢你的帮助,我明天试试这个
  • 伊皮。谢谢 Faa 你是个天才! Mod重写就像一个梦想。我所有的页面现在对谷歌显示为 301 永久。非常感谢!
【解决方案2】:

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

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

【讨论】:

  • 啊,你的意思是cms系统。它的wordpress
  • 文件都是同一个主机。他们刚刚重命名并指出了我的新域名。然后我更改了数据库和 wpconfig 文件以识别我的新域 Brightmist
  • 您是否尝试在您的 htaccess 文件中添加我放置的内容(替换域)?
  • 谢谢 Matthew,是的,它发回了一个错误。上面 cmets 中的开发人员说我应该使用 mod_alias,但我不知道如何解决这个问题!我已经设法让 301 使用一些不同的代码,如下面的回答所示。您是否碰巧知道我如何使用一串代码自动重定向所有链接,而不会导致循环。两个域都指向同一个主机。假设我输入 artygirl.co.uk/blog/2013/02/23/manchester-art-gallery-feb-2013 我希望它重定向到 brightmist.co.uk/blog/2013/02/23/…
  • 这是另一个堆栈问题,似乎没有找到答案stackoverflow.com/questions/10643271/…
【解决方案3】:

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

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 对于避免无限循环非常重要,因为您从同一个文件夹交付两个域。您只想重定向不正确的那个。

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

我希望这会有所帮助。

【讨论】:

  • 非常感谢 Octopus,但这是我已经拥有的,但仍然无法正常工作!
  • @Judi 您拥有的 RedirectMatch 覆盖了重写规则并将所有内容定向到根目录。我相信您最好删除它并正确设置重写规则。
  • 谢谢章鱼你在谈论faa的回答。这就是我最终使用的,并且效果很好!选项 +FollowSymlinks -MultiViews RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) brightmist.co.uk/$1 [R=301,NC,QSA,L]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-21
  • 2017-03-11
相关资源
最近更新 更多