Apache 防止无效URL参数出现错误403
我有指向我的网站的链接,这些链接是由用户点击的,而不是直接在我的控制下进行更改或正确编码 URL看起来像这样Apache 防止无效URL参数出现错误403,apache,.htaccess,http,url,http-status-code-403,Apache,.htaccess,Http,Url,Http Status Code 403,我有指向我的网站的链接,这些链接是由用户点击的,而不是直接在我的控制下进行更改或正确编码 URL看起来像这样 http://mywebsite.com?email=%%username@company.com 我希望此URL不被禁止,并防止出现错误403 在其他问题上,人们说“是mod_security的10_asl_rules.conf造成了这个错误。”我搜索了它,在PHP信息页面上找不到mod_security 下面是我的.htaccess文件的外观 <IfModule mod_rew
http://mywebsite.com?email=%%username@company.com
我希望此URL不被禁止,并防止出现错误403
在其他问题上,人们说“是mod_security的10_asl_rules.conf造成了这个错误。”我搜索了它,在PHP信息页面上找不到mod_security
下面是我的.htaccess文件的外观
<IfModule mod_rewrite.c>
Options +FollowSymlinks -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} (.+)=[%25][%25](.+)
RewriteRule (.*) $1/?%1=%2 [R=301,L,NC]
ErrorDocument 403 "We are working on it..."
</IfModule>
选项+以下符号链接-多视图
重新启动发动机
重写基/
重写cond%{QUERY_STRING}(.+)=[%25][%25](.+)
重写规则(.*)$1/?%1=%2[R=301,L,NC]
错误文档403“我们正在处理它…”
您可以在htaccess文件中尝试类似的操作(测试正常):
重定向http://mywebsite.com?email=%%username@company.com
到<代码>http://mywebsite.com/?email=username@例如,company.com
在进行任何测试之前,请确保已清除浏览器缓存
您可以将标志更改为[R,L,NC]进行生产。您知道这些URL应该是什么样子的吗?或者只是尝试删除完整的查询字符串(所有在
之后的内容?
)就可以了?我想删除%%,或者至少打开页面,并使用JavaScriptOK清除值。您必须检查查询字符串(%{QUERY\u STRING}
)对于.htaccess或Apache配置文件中的那些字符,并在目标URL中生成一个不包含这些字符的新查询字符串。对于http://dev4tech.site/templates/template6/?email=%%someemailss@mail.com
但是它会重定向此http://dev4tech.site/templates/template6/?email=%25%25someemailss@mail.com
至http://dev4tech.site/templates/template6//?email=someemailss@mail.com
在应用这些规则之前要拒绝的无效URL接缝+重定向后,我在URL中得到了额外的/
。@Nadeem:你说这对我不起作用吗http://dev4tech.site/templates/template6/?email=%%someemailss@mail.com
但在你的下一篇评论中,它似乎起了作用。不明白。现在,根据您的示例,传入URL中的查询前面没有斜杠“/”,这就是它被复制的原因。通常,这不应该是一个问题,也绝对不应该产生错误。我将修改我的答案。不过,这需要一些时间。同时,也许你可以发布整个.htaccess文件来隐藏相关信息,了解它很重要。如果URL有%25%25,它可以工作,如果有%%
Options +FollowSymlinks -MultiViews
RewriteEngine on
RewriteCond %{QUERY_STRING} ^/?(.+)=[%25][%25](.+)
RewriteRule (.*) $1/?%1=%2 [R=301,L,NC]