htaccess重定向301与参数中的正斜杠将无法正常工作

时间:2013-12-06 13:23:32

标签: regex .htaccess mod-rewrite redirect query-string

到目前为止,我做了一些研究,但找不到解决方案。我有一个客户端在URL上有这个旧的文件结构:

/index.php?process=views/article.php&articleId=44102

应重定向到此网址:

/news/title-of-article/

我发现我的htacces文件中可能需要这个:

RewriteCond %{QUERY_STRING} &articleId=44102 [NC]
RewriteRule .* /news/title-of-article/ [R=301,L]

当我使用完整的网址测试时,它不会重定向。但是,当我忽略这样的正斜杠时:

/index.php?process=viewsarticle.php&articleId=44102

重定向很好。所以我认为正斜杠是问题所在。

我不是设置.htaccess文件的专家,这让我发疯,因为看起来我有正确的解决方案,但不知道为什么正斜杠阻止了重定向。

如果你无法回答最终的解决方案,我很高兴有一些工具(网站,软件等),我可以在这里详细测试这些重写条件。也许有正则表达式可用于正则表达式,但只有RewriteCond和RewriteRules,我可以用来自己弄清楚。

提前致谢 玛丽安

1 个答案:

答案 0 :(得分:0)

问题是你没有剥离QUERY_STRING在重写的URI中,由于结果URL还包含QUERY_STRING process=views/article.php&articleId=44102,它再次匹配规则导致重定向循环。

将您的规则更改为:

RewriteCond %{QUERY_STRING} &articleId=44102 [NC]
RewriteRule .* /news/title-of-article/? [R=301,L]
最后

?将删除现有的查询字符串。