[英]htaccess restrict post access to specific url
我有一个站点已加密,并且我无法在内部代码中进行此操作。 所以我知道我们可以通过mod_rewrite重定向或抛出404错误。
另外我的网址是西里尔文,因此在Chrome中
www.example.com/Нешто_два
但是当我复制/粘贴它看起来像
www.example.com/%D0%9F%D0%BE%D0%B1%D0%B0%D1%80%D0%B0%D1%98%D1%82%D0%B5_%D0%A2%D0%B5%D1%81%D1%82_%D0%92%D0%BE%D0%B7%D0%B5%D1%9A%D0%B5
我试图使用mod_rewrite禁用该URL上的发布请求,但该URL仍然接受发布请求。 通过http工具测试。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^.*/tiny_mce/.*$
RewriteCond %{REQUEST_URI} \.(php|html?)$ [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]*)\.?(.*)$ index.php?q_url=$1 [QSA]
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} ^Нешто_два$
RewriteRule ^ - [L,R=404]
</IfModule>
.htaccess文件需要使用转义格式的URL,因此,您应该将显示的转义版本“%D0%9F%D0%BE%D0%B1%D0%B0%D1%80”转义,而不是“Нешто_два” %D0%B0%D1%98%D1%82%D0%B5_%D0%A2%D0%B5%D1%81%D1%82_%D0%92%D0%BE%D0%B7%D0%B5%D1 %9A%D0%B5“
看起来有点长,所以可能还有其他东西。 我试着只是转换字符串并想出了:
“ \\ xD09D \\ xD0B5 \\ xD188 \\ xD182 \\ xD0BE_ \\ xD0B4 \\ xD0B2 \\ xD0B0”
可以将转义的版本放在RewriteCond中:
RewriteCond %{REQUEST_URI} ^%D0%9F%D0%BE%D0%B1%D0%B0%D1%80%D0%B0%D1%98%D1%82%D0%B5_%D0%A2%D0%B5%D1%81%D1%82_%D0%92%D0%BE%D0%B7%D0%B5%D1%9A%D0%B5$
要限制http发布,您需要在VirtualHost或Directory块内使用“ Limit或LimitExcept指令(如果您不将其中之一放进去,它将无法工作!)。例如,以下内容仅允许http进入此站点下
<Directory>
........
<LimitExcept GET>
Require valid-user
</LimitExcept>
如果您使用.htaccess文件,则只需粘贴此部分,而无需Direcotry块
<LimitExcept GET>
Require valid-user
</LimitExcept>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.