1

简要背景:我们的知识库有大约 200 篇文章,虽然每篇文章都可以有各种 URL,它们都包含指向我们希望 Google 索引的内容的规范链接。规范链接工作正常,但蜂鸟发布后,谷歌已开始在常见问题解答中删除该文章可用的其他 URL 格式的许多规范链接。没有任何改变,网站的所有其他部分都正常工作。

我们将继续研究为什么会发生这种情况,但同时最好的方法是将特定文章的所有 URL 301 到所需的(规范)URL。由于 htaccess 文件中的其他内容,我们尝试不同的方法根本没有成功。它最终陷入某种循环。

请允许我分享我们的要求,然后发布我们的 htaccess,以便我们可以根据需要进行更改。

要求

对所有 URL 强制非安全(使用 301 将所有 https 重定向到 http) - 已经在 htaccess 中工作 将非 www 重定向到 www - 已经在 htaccess 中工作 将包含特定导演的任何 URL 重定向到静态 URL - 不工作

需要重定向的文章示例

一篇特定的文章可以有多个 URL

  • /kb/article/AA-00333
  • /kb/article/AA-00333/0/
  • /kb/article/AA-00333/0/1/
  • /kb/article/AA-00333/0/article-title.html

我们希望将任何包含 AA-00333 的 URL 重定向到http://www.xyzdomain.com/kb/article/AA-00333/0/article-title.html

我们可以在 htaccess 中手动为每篇特定文章设置一个条目。

当前的 HTACCESS

AddDefaultCharset UTF-8
DirectoryIndex index.php

#redirect articles
#RewriteEngine on
#RewriteRule .*AA-00333.* http://www.xyzdomain.com/kb/article/AA-00333/0/article-title.html [L,R=301]

#Redirect all secure to non secure https/http with 301
RewriteCond %{HTTPS} ^on$
RewriteRule ^(.*)$ http://www.xyzdomain.com/kb/$1 [R=301,L]

<IfModule mod_rewrite.c>
RewriteEngine On 
# Redirect non-www to www:
RewriteCond %{HTTP_HOST} !^(www\.xyzdomain\.com)?$
RewriteRule ^(.*)$ http://www.xyzdomain.com/kb/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L]

</IfModule>
#
4

2 回答 2

0

你需要这样的东西吗?

RewriteCond %{REQUEST_URI} !article-title\.html$
RewriteRule ^kb/article/AA-00333 http://www.xyzdomain.com/kb/article/AA-00333/0/article-title.html [L,R=301]

您所拥有的问题是目标 URL也与正则表达式模式匹配,因为它还包含 a AA-00333,从而导致重定向循环。您注意到您希望它也被重定向,但这会导致循环。

于 2013-11-10T21:54:46.030 回答
0

非常感谢大家的建议。这些似乎都不是 100% 有效,所以我尝试了我们所有的尝试,似乎找到了解决方案

RewriteEngine on
RewriteCond %{REQUEST_URI} !0/article-title\.html$
RewriteRule .*AA-00333.* http://www.xyzdomain.com/kb/article/AA-00333/0/article-title.html [L,R=301]

它似乎适用于所有测试 URL,但如果您发现有问题,请告诉我。

再次感谢您的宝贵见解。我喜欢这个网站,并期待尽我所能做出贡献。

于 2013-11-12T03:38:53.347 回答