0

我有一个网站女巫是加密的,我不能在里面做这个代码。所以我知道我们可以通过 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 上的 post 请求,但该 url 仍然接受 post 请求。通过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>
4

2 回答 2

1

.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$
于 2013-06-19T19:54:54.843 回答
0

要限制 http 发布,您需要在 VirtualHost 或 Directory 块中使用“Limit 或 LimitExcept 指令(如果您不放入其中之一,它将不起作用!)。例如,以下将只允许 http 在此站点中获取在下面

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

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

<LimitExcept GET>
   Require valid-user
</LimitExcept>
于 2013-06-19T19:52:31.040 回答