繁体   English   中英

htaccess将帖子访问限制为特定的URL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM