首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果输入值有"!“,如何将url重定向到主页?

如果输入值有"!“,如何将url重定向到主页?
EN

Stack Overflow用户
提问于 2022-11-25 16:40:44
回答 1查看 37关注 0票数 1

如果有任何用户将!字符作为输入值提交,我希望将该URL重定向到主页。

代码语言:javascript
复制
 example.com/index.php?c%5B%5D=%21&c%5B%5D=&c%5B%5D=&c%5B%5D=&c%5B%5D=&ic=&submit=find

如果多个输入值与字符!一起提交,我希望被重定向到主页,否则代码将在同一页上工作。

例如,在这个URL中:

代码语言:javascript
复制
https://www.example.com/currencyconverter/convert/?Amount=!&From=USD&To=EUR

!是包含的,所以我想将它重定向到我的页面example.com。但是,如果URL是这样的:

代码语言:javascript
复制
https://www.example.com/currencyconverter/convert/?Amount=!3&From=USD&To=EUR

在这个URL中,我提交了输入值!3,所以我不想重定向它。我唯一想要的是,如果URL只包含!值,那么它将被重定向到主页,否则代码将正常工作。我怎么能这么做?

EN

回答 1

Stack Overflow用户

发布于 2022-11-27 00:40:33

如果任何URL参数完全只包含! (URL编码与否),则重定向到文档根。您可以使用mod_rewrite在根.htaccess文件顶部附近执行此操作:

代码语言:javascript
复制
RewriteEngine On

RewriteCond %{QUERY_STRING} \=(!|%21)(&|$)
RewriteRule ^ / [QSD,R=302,L]

更新: regex \=(!|\%21)(&|$)匹配值为!%21 (%21编码)的任何%21参数值。虽然=在这个上下文中不是一个特殊的regex元字符,但它需要反斜杠转义,以避免被解释为= Apache mod_rewrite前缀-运算符。或者,您可以在文字=之前匹配单个字符,例如。.=

要从重定向响应中丢弃查询字符串,必须使用QSD标志。

请注意,此规则目前适用于任何URL路径。如果它应该只适用于/currencyconverter/convert/ (例如),那么在规则中应该是具体的。例如:

代码语言:javascript
复制
:
RewriteRule ^currencyconverter/convert/$ / [QSD,R=302,L]

注意:RewriteRule模式匹配的URL路径不以斜杠开头.

撇开:

但是为什么不用403的禁令来阻止请求,而不是发出重定向呢?即。改用以下RewriteRule

代码语言:javascript
复制
:
RewriteRule ^ - [F]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74575719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档