htaccess从重写的动态网址重定向到新的动态网址

时间:2012-09-28 18:19:09

标签: .htaccess redirect dynamic-url

我遇到了一个非常独特的问题,我希望有人可以提供帮助!

因此我们最近创建了一个新的电子商务网站,我们将其设置为现场,一切都运行良好但是当我们从旧页面实施我们的301时,我们得到了一些奇怪的东西

所以下面的代码实际上有效

Redirect 301 /directory/ http://mysite.com/index.php?cat=1

此代码不

Redirect 301 /directory/sub_directory/ http://mysite.com/index.php?cat=2

我尝试执行此重定向时的输出是“指定的参数无效!”在一个空白的网页上和地址栏中它有这个

http://mysite.com/index.php?cat=1/sub_directory/

我们认为问题可能是因为我们的旧页面是动态的,但mod_rewrite用于创建更具可读性的网址,我们还删除了所有旧文件,因为它们干扰了我们的新网页呈现

任何帮助将不胜感激!

感谢

1 个答案:

答案 0 :(得分:0)

这很奇怪,因为重定向应该只匹配列出的特定URL,因为它看起来像rewriterule,并且子目录url与第一个规则部分匹配..

尝试将更具体的规则置于不太具体的规则之上,如下所示:

Redirect 301 /directory/sub_directory/ http://mysite.com/index.php?cat=2
Redirect 301 /directory/ http://mysite.com/index.php?cat=1

这样就会首先点击更具体的规则,只有当上面更具体的匹配失败时,/ directory / only规则才会匹配

或者,您可以尝试RewriteRules:

RewriteRule ^directory/$ http://mysite.com/index.php?cat=1 [R=301,NC,L]
RewriteRule ^directory/sub_directory/$ http://mysite.com/index.php?cat=2 [R=301,NC,L]

^和$ anchors应该防止任何不需要的部分匹配