简要背景:我们的知识库有大约200篇文章,尽管每篇文章都有各种各样的网址,这些网址都包含我们希望Google编制索引的规范链接。 Canonical链接工作正常但是发布了蜂鸟,google开始放弃许多常见问题解答中针对该文章提供的其他URL格式的规范链接。没有任何改变,网站的所有其他部分都正常工作。
我们将继续研究为什么会发生这种情况,但与此同时,最佳途径是将特定文章的所有网址301转换为所需(规范)网址。由于我们的htaccess文件中的其他内容,我们在尝试不同方法时根本没有成功。它最终会出现某种循环。
请允许我分享我们的要求,然后发布我们的htaccess,以便我们可以根据需要进行更改。
要求
强制所有网址不安全(将所有https重定向到带301的http) - 已经在htaccess中工作将非www重定向到www - 已经在htaccess中工作将包含特定控制器的任何URL重定向到静态URL - NOT WORKING
需要重复文章的例子
一篇特定文章可以包含多个网址
我们希望任何包含AA-00333的网址都被重定向到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>
#
答案 0 :(得分: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]
您所遇到的问题是目标网址也匹配正则表达式模式,因为它中还包含AA-00333
,从而导致重定向循环。您注意到您希望将其重定向,但这会导致循环。