Regex 为什么可以';我是否强制用户登录以从我的网站下载zip文件?

Regex 为什么可以';我是否强制用户登录以从我的网站下载zip文件?,regex,wordpress,.htaccess,Regex,Wordpress,.htaccess,我有一个包含zip文件和pptx(PowerPoint)文件的目录。目录中是否有.htaccess(regex?)代码: RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC] RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC] RewriteCond %{HTTP_COO

我有一个包含zip文件和pptx(PowerPoint)文件的目录。目录中是否有.htaccess(regex?)代码:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf)$ http://mydomain.me.uk/  [NC]
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf)$ http://mydomain.me.uk/  [NC]
RewriteEngine On
RewriteRule ^(.*)$ $1 [NS,E=no-gzip:1,E=dont-vary:1]
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx)$ http://mydomain.me.uk/  [NC]
当用户输入pptx文件的直接URL时,除非他们登录,否则将正确地向他们提供404服务对于zip和7z(7zip)文件,即使这些文件扩展名在my.htaccess代码中正确列出(要阻止),他们仍然可以下载这些文件,而无需登录


为什么这段代码不适用于存档文件?

这可能是完全愚蠢的,但可能与HTTP压缩有关。尝试禁用mod_deflate,重新启动apache,然后看看它是否可以工作。这只是一种预感,可能与此无关。

这可能完全愚蠢,但可能与HTTP压缩有关。尝试禁用mod_deflate,重新启动apache,然后看看它是否可以工作。这只是一种预感,可能与此无关。

我来这里是想回答我自己的问题

我的原始代码有两个问题:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf)$ http://mydomain.me.uk/  [NC]
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf)$ http://mydomain.me.uk/  [NC]
RewriteEngine On
RewriteRule ^(.*)$ $1 [NS,E=no-gzip:1,E=dont-vary:1]
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx)$ http://mydomain.me.uk/  [NC]
最后一行忽略了我想要抑制的所有文件格式,尽管第3行正确引用了这些格式(我的代码不完整!)

除此之外,正如afdggfh所说:我需要在指定的文件夹中抑制gzip压缩

因此,我提出了更健壮的代码:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf)$ http://mydomain.me.uk/  [NC]
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf)$ http://mydomain.me.uk/  [NC]
RewriteEngine On
RewriteRule ^(.*)$ $1 [NS,E=no-gzip:1,E=dont-vary:1]
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx)$ http://mydomain.me.uk/  [NC]

以上是有效的代码

我是来回答我自己的问题的

我的原始代码有两个问题:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf)$ http://mydomain.me.uk/  [NC]
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf)$ http://mydomain.me.uk/  [NC]
RewriteEngine On
RewriteRule ^(.*)$ $1 [NS,E=no-gzip:1,E=dont-vary:1]
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx)$ http://mydomain.me.uk/  [NC]
最后一行忽略了我想要抑制的所有文件格式,尽管第3行正确引用了这些格式(我的代码不完整!)

除此之外,正如afdggfh所说:我需要在指定的文件夹中抑制gzip压缩

因此,我提出了更健壮的代码:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf)$ http://mydomain.me.uk/  [NC]
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf)$ http://mydomain.me.uk/  [NC]
RewriteEngine On
RewriteRule ^(.*)$ $1 [NS,E=no-gzip:1,E=dont-vary:1]
RewriteCond %{HTTP_REFERER} !^http://(www.)?mydomain.me.uk/ [NC]
RewriteCond %{REQUEST_URI} !hotlink.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*.(pptx|ppt|pdf|zip|7z|rar|xls|xlsx|doc|docx)$ http://mydomain.me.uk/  [NC]

以上是有效的代码

听起来很有可能是这样。而不是禁用压缩-有没有办法使压缩与我正在尝试的操作兼容?我想,如果我能修改我的代码,使其对压缩友好,那将非常棒。我相信你高估了我的专业知识,我只是在这里吐痰。您是否尝试过该解决方案并确认其有效?如果是,这可能是一个值得报告的bug。就我而言,配置apache总是一件让人头疼的事。我在网站上检查了缓存插件,但没有。我检查了主通道。没有使用deflate!您是否分别检查了httpd.conf或apache2.conf?如果您安装了a2dismod,您可以尝试
sudo a2dismod deflate
禁用该模块我所做的是在一个文件夹中编辑.htaccess文件,如下所示:RewriteEngine On RewriteRule^(.*)$$1[NS,E=no gzip:1,E=dont Variable:1]RewriteCond%{HTTP\u REFERER}^http://(www.)?creativejames.me.uk/[NC]RewriteCond%{REQUEST_URI}!热链接(pptx | ppt | pdf | zip | 7z | rar | xls | xlsx | doc | docx)[NC]RewriteCond%{HTTP|u COOKIE}*wordpress_已登录。*$[NC]重写规则。*.(pptx | ppt | pdf)$[NC]应该关闭该文件夹的deflate,但它仍然无法工作…听起来很可能就是这样。而不是禁用压缩-有没有办法使压缩与我正在尝试的操作兼容?我想,如果我能修改我的代码,使其对压缩友好,那将非常棒。我相信你高估了我的专业知识,我只是在这里吐痰。您是否尝试过该解决方案并确认其有效?如果是,这可能是一个值得报告的bug。就我而言,配置apache总是一件让人头疼的事。我在网站上检查了缓存插件,但没有。我检查了主通道。没有使用deflate!您是否分别检查了httpd.conf或apache2.conf?如果您安装了a2dismod,您可以尝试
sudo a2dismod deflate
禁用该模块我所做的是在一个文件夹中编辑.htaccess文件,如下所示:RewriteEngine On RewriteRule^(.*)$$1[NS,E=no gzip:1,E=dont Variable:1]RewriteCond%{HTTP\u REFERER}^http://(www.)?creativejames.me.uk/[NC]RewriteCond%{REQUEST_URI}!热链接(pptx | ppt | pdf | zip | 7z | rar | xls | xlsx | doc | docx)[NC]RewriteCond%{HTTP|u COOKIE}*wordpress|u已登录。*$[NC]重写规则。*.(pptx | ppt | pdf)$[NC]应该为该文件夹关闭deflate,但它仍然无法工作。。。