2015-10-15 128 views
0

我正在清理一些旧的东西,我需要做一些301重定向。Seo 301绝对url重定向,Prestashop

例如:

我试图与htaccess的:

RedirectMatch 301 /product.asp?product=371&sub=0&page=1 /category/test 

但上面的代码将无法正常工作,它显示404页面并忽略我刚刚做出的重定向。请注意,product.asp不作为文件存在!

但是,如果我使用:

RedirectMatch 301 /product.asp /category/test/ 

它的工作原理排序了,但我现在不能做重定向,基于查询字符串为特定的文件。

有什么建议吗?顺便说一句我正在使用Prestashop =) 最好,西蒙

回答

1

您无法使用RedirectMatch指令匹配查询字符串。使用mod_rewrite规则,而:

RewriteEngine On 

RewriteCond %{QUERY_STRING} product=371&sub=0&page=1 
RewriteRule ^product\.asp$ /category/test/? [L,NC,R=301] 

?的目标是剥离现有的查询字符串。

+0

我明白了你的观点。什么是解决这个问题的首选方法?不幸的是,我无法让你的代码工作。它显示404:/ Btw,因为我看到你的代码正在被重写,而不是重定向,这是真的吗? :) – simon

+0

同样的规则在我的Apache上适用于我。你还有其他规则吗?如果那么确保将此规则作为第一条规则。 – anubhava

+1

@simond不,这不是真的。它正在重定向。这就是'R = 301'告诉它做的。和你在之前的尝试中使用301一样。 –

1

mod_alias设计用于处理简单的URL操作任务。对于更复杂的任务(如操作查询字符串),请使用mod_rewrite提供的工具。

here

刚刚从@anubhava回答到的Prestashop的.htaccess添加规则,它会工作。最好在# ~~start~~之前这样做,你会在文件中看到通知。