htaccess限制对特定网址的帖子访问权限

时间:2013-06-19 18:56:24

标签: php apache .htaccess mod-rewrite

我有一个网站女巫加密,我不能在内部代码。所以我知道我们可以通过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来禁用该网址上的帖子请求,但该网址仍接受帖子请求。通过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>

2 个答案:

答案 0 :(得分:1)

.htaccess文件需要以转义形式提供网址,因此您应该将显示的版本转义为“%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$

答案 1 :(得分:0)

要限制http post,您需要在VirtualHost或Directory块中使用“Limit或LimitExcept指令”(如果您没有将其中一个放入其中,那么它将不起作用!)。 例如,以下内容仅允许在

下的http网站中获取http
<Directory> 
 ........
<LimitExcept GET>
   Require valid-user
</LimitExcept>

如果您使用.htaccess文件,只需粘贴此部分而不使用Direcotry块

<LimitExcept GET>
   Require valid-user
</LimitExcept>