.htaccess 中的重写规则

.htaccess 中的重写规则

我在 Stackoverflow 上问过这个问题,但其中一位回复者建议我在这里问。我想知道这是否可以在 htaccess 中完成?

我有这个网址:

https://www.example.com/folder/New.jsp?par=new1 

...我想重定向到:

 https://www.example.com/folder/New.jsp

我该怎么做?

基本上,我par=new1|new2|new3|new4希望被重定向到https://www.example.com/folder/New.jsp

如能得到您的任何帮助,我们将非常感激。

答案1

如果你只需要去掉参数,这很简单

RedirectMatch https://www.website.com/folder/New.jsp(\?par=.[a-z])  https://www.website.com/folder/New.jsp

不需要 mod_rewrite。

答案2

为了匹配特定的 URL 参数,你需要使用 mod_rewrite 和状况检查QUERY_STRING服务器变量。mod_aliasRedirectRedirectMatch指令仅匹配 URL 路径,不能用于检查查询字符串。

.htaccess在文档根目录中的文件顶部附近尝试执行以下操作:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^par=(new1|new2|new3|new4) [NC]
RewriteRule ^folder/New\.jsp$ /$0 [NC,QSD,R,L]

指令上的标志QSD(需要 Apache 2.4)RewriteRule丢弃重定向 URL 中的原始查询字符串。如果您仍在使用 Apache 2.2,则?代换字符串。例如:RewriteRule ^folder/New\.jsp$ /$0? [NC,R,L]

$0是对匹配的整个 URL 路径的反向引用RewriteRule 图案。 IE。folder/New.jsp

请注意,这是 302(临时)重定向。如果需要 301(永久)重定向,则将标志更改RR=301

相关内容