到目前为止,我做了一些研究,但找不到解决方案。我有一个客户端在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,我可以用来自己弄清楚。
提前致谢 玛丽安
答案 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]
最后 ?
将删除现有的查询字符串。