由于网址不正确,我们生成了一些不起作用的链接,我想通过301重定向重定向它们以清除Google的一些网站管理员工具问题。
所以,我们有这样的网址:
http://www.site.com/subdomain/z//-products
*请注意,子域是可变的,其余的url是静态的。
作为旁注,这个URL毫无意义,这就是我想重定向它的原因。它应该是这样的:
http://www.site.com/bedroom/z/12345/bedroom-furniture-products
无论如何,我们有动态生成这些错误的URL。我们已经修复了它们,但谷歌选择了它们并继续尝试抓取它们。我想创建一个htaccess规则,301重定向它们,问题应该最终消失。
这是我尝试用htaccess无济于事的方法:
^(.*)/n//-products/?$ $1 [R=301,B]
我也尝试了各种各样的排列,但它不起作用。我怀疑这是一个逃避问题的实体,但是我的研究让我添加了[B],但这似乎也没有用。这就像重定向规则正在运行,但它只是重定向到原始页面。
我在这里缺少什么?
答案 0 :(得分:1)
我认为anubhava是正确的,因为您描述的示例网址/subdomain/z//-products
与您尝试应用的RewriteRule之间存在不一致。不确定这是否是拼写错误。甚至可能是您的复制/粘贴操作实际上实际上添加了“/ n”。
Anyhoo,让我们假设您希望规则适用于/subdomain/z//-products
:
RewriteRule ^/([^/]+)/z//\-products/?$ http://www.site.com/$1 [R=301]
请参阅the example 1 slides of this PDF获取快速的第一部分。它比使用(.*)
快得多。
我们确实匹配z
字符和周围的斜杠。我们转义-
字符,然后我们执行URL的其余部分并选择性地匹配尾部斜杠。如果内存正确,我们使用“外部”样式重定向,以便机器人重新打开单独的HTTP连接,附加匹配的反向引用,并交出状态代码。
如果有效,请告诉我。
答案 1 :(得分:0)
通过httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放在.htaccess
目录下的DOCUMENT_ROOT
中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteRule ^subdomain/z/-products/?$ /$1 [L,R=302,NC]
验证一切正常后,将R=302
替换为R=301
。在测试mod_rewrite规则时,请避免使用R=301
(永久重定向)。