Regex htaccess重定向301,参数中带正斜杠赢得';行不通
到目前为止,我做了一些研究,但没有找到解决办法。我有一个客户在URL上有这样一个旧的文件结构:Regex htaccess重定向301,参数中带正斜杠赢得';行不通,regex,.htaccess,mod-rewrite,redirect,query-string,Regex,.htaccess,Mod Rewrite,Redirect,Query String,到目前为止,我做了一些研究,但没有找到解决办法。我有一个客户在URL上有这样一个旧的文件结构: /index.php?process=views/article.php&articleId=44102 哪个应该重定向到此URL: /news/title-of-article/ 我发现我的htacces文件中可能需要此文件: RewriteCond %{QUERY_STRING} &articleId=44102 [NC] RewriteRule .* /news/title-
/index.php?process=views/article.php&articleId=44102
哪个应该重定向到此URL:
/news/title-of-article/
我发现我的htacces文件中可能需要此文件:
RewriteCond %{QUERY_STRING} &articleId=44102 [NC]
RewriteRule .* /news/title-of-article/ [R=301,L]
当我用完整的URL测试它时,它不会重定向。但是当我去掉正斜杠时,就像这样:
/index.php?process=viewsarticle.php&articleId=44102
很好。所以我假设正斜杠就是这里的问题
我不是设置.htaccess文件的专家,这让我发疯,因为我似乎有一个显而易见的正确解决方案,但不知道为什么正斜杠会阻止重定向
如果你不能用最终的解决方案来回答,我希望有某种工具(网站、软件等),在那里我能够详细测试这些重写条件。也许有一些类似正则表达式测试程序的东西可以用于正则表达式,但只用于RewriteCond和RewriteRules,我可以用它们自己解决问题
提前谢谢
Marian问题在于,您并没有在重写的URI中剥离查询字符串,因为生成的URL还包含
QUERY\u字符串
,如process=views/article.php&articleId=44102
,并且它再次匹配规则,导致重定向循环
将规则更改为:
RewriteCond %{QUERY_STRING} &articleId=44102 [NC]
RewriteRule .* /news/title-of-article/? [R=301,L]
?
最后将删除现有的查询字符串。谢谢您的回答。不幸的是,这并不能解决问题。它仍然没有重定向原始URL,但没有正斜杠的URL重定向良好。由于301缓存问题,请使用其他浏览器进行测试。我已在其他浏览器中进行了检查。同样的结果。它必须与查询字符串中的正斜杠相关。是否输入:http://domain.com/index.php?process=views/article.php&articleId=44102
在您的浏览器中?我想我找到了。我必须把重写条件放在WordPress重写条件之前。现在问题解决了。非常感谢。