Articles of apache 2.4

从根目录.htaccess重写规则中排除不允许caching的目录

在我的灯安装,我已经在根文件夹“/”(mydomain.org)W3总caching激活wordpress多站点,我也有一个sub_dir称为“ 子 ”(mydomain.org/sub)与PHP脚本里面。 我有一些sub_dircaching问题,所以我想设置一个RewriteRule从我的sub_dir中排除W3总caching ,问题是,我只有这方面的基本知识。 我的根的htaccess … # BEGIN W3TC Minify cache <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^[_0-9a-zA-Z-]+/wp-content/cache/minify/[0-9]+/w3tc_rewrite_test$ /wp-content/plugins/w3-total-cache/pub/minify.php?w3tc_rewrite_test=1 [L] </IfModule> # END W3TC Minify cache <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ – [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} […]

在conf-available中configuration服务器范围的RewriteRule

最近我一直在我的网站的日志中find一些引荐垃圾邮件。 为了阻止这个(因为它非常烦人,也污染我的统计),我想阻止来自某些引用域的请求。 可以find很多文章,build议在网站的.htaccess文件中放入以下(或类似的东西): RewriteEngine On RewriteCond %{HTTP_REFERER} example\.com [NC] RewriteRule .* – [F] 这工作得很好,但是,我想将其移到Apacheconfiguration,以便将此重写规则应用于服务器上托pipe的所有网站。 我也读过这对性能更好,因为必须为每个请求parsing.htaccess文件,而Apacheconfiguration只加载一次。 我的服务器在Ubuntu上运行,所以我创build了一个新的.conf文件:/etc/apache2/conf-available/block-referrer-spam.conf,其内容与上面的.htaccess代码片段完全相同。 我在启用conf的目录中创build了一个符号链接(使用sudo a2enmod block-referer-spam )并重新加载了Apacheconfiguration( sudo service apache2 reload )。 但是,与使用.htaccess不同,Apache不会阻止请求(返回403)。 我想我可能会忽略简单的东西,所以任何帮助表示赞赏。

如何将主机名变成重写文件

我们有一些子域名的设置,我想简化一些Apacheconfiguration – 特别是这些特定的子域名是不稳定的。 无论如何,我试图得到一个重写规则,包括主机。 到目前为止,我有: RewriteEngine On RewriteCond %{HTTP_HOST} ^(.*).net.au$ RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%1.net.au$1 [R=302,L] 这是基于https://stackoverflow.com/questions/3634101/url-rewriting-for-different-protocols-in-htaccess和http://httpd.apache.org/docs/2.4/rewrite/vhosts.html 但是,第一种情况下的模式并没有写入重写的地址,我最终被发送到.net.au /任何地方(不会让我用https在前面发帖) – 我错过了什么? 在Ubuntu 14.04上运行apache 2.4

Apache LIMIT指令不允许通过局域网看到localhost项目

我想允许通过在.htaccess使用Apache LIMIT指令在局域网上看到我的localhost项目 我的localhost项目的URL是http://192.68.0.123/myproject 下面是导致问题的.htaccess部分 <Limit POST PUT DELETE> order deny,allow deny from all allow from 192.168.0.0/255 Satisfy any </Limit> 但它给错误 服务器错误! 服务器遇到内部错误,无法完成您的请求。 服务器过载或者CGI脚本中有错误。 错误500 192.168.0.123 Apache / 2.4.10(Unix)OpenSSL / 1.0.1i PHP / 5.5.15 mod_perl / 2.0.8-dev Perl / v5.16.3 我的error_log是 [Fri Dec 26 11:18:36.183915 2014] [core:alert] [pid 4752] [client 192.168.0.123:38795] /opt/lampp/htdocs/myproject/.htaccess:指定的networking掩码无效。 我的工作 如果我allow from 192.168.0.123设置allow […]

Apache通过HTTPS向任意AWS S3存储桶转发代理HTTP请求

这是我原来的职位的重写。 我还在琢磨如何让自定义客户端(只能说HTTP的Windows服务,不支持HTTPS)通过Apache 2.4代理将file upload到Amazon AWS S3存储桶。 由于客户端不支持HTTPS,因此我希望它通过HTTP访问任意的S3存储桶,并使Apache代理在其本身和S3存储桶之间透明地使用HTTPS,例如HTTPS:// bucket-name .s3- aws-region .amazonaws .com,来处理file upload。 一个简单的重写到目前为止没有奏效。 这不会是一个redirect(mod_proxy [R,L]标志),因为我不想将客户端redirect到HTTPS URL,因为它不能执行SSL。 我可以使用反向代理为单个存储桶执行此操作,但是我不知道如何将任何数量的未指定存储区使用反向代理,因为这是ProxyPass和ProxyPassReverse设置中的重要区域。 我正试图做甚至可能吗? 感觉应该是…

find从多个日志文件获得高stream量的VirtualHost

有时我的Apache服务器负载很重。 我有很多VirtualHost,每个都有自己的日志文件。 这个结构就像这个/var/www/httpd-logs/virtualhost.com.access.log 我可以用什么命令find在过去X分钟内负载过重的网站? 然后,我会分析相应的网站日志find问题。

Alias指令可能永远不会匹配,因为它与早期的Alias重叠

好吧,不知道为什么这是发生。 所以,我收到消息 The Alias directive in /etc/httpd/conf.d/awstats.conf at line 3 will probably never match because it overlaps an earlier Alias. 和 The Alias directive in /etc/httpd/conf.d/welcome.conf at line 18 will probably never match because it overlaps an earlier Alias. 但是这里是我的/httpd/httpd.conf文件的前15行 ServerSignature Off ServerTokens Prod ServerRoot "/etc/httpd" Listen *:80 Listen *:443 User apache Group apache ServerAdmin […]

Apache子域和主机重写

所以这里是我想要做的基础。 我有2个服务器,一个现场和一个开发。 Live有2个域名连接到它。 为了简单起见,我们将把它们称为a.live.com和b.live.com。 开发者有一个公共的IP地址,但是没有附加主机。 所以我可以访问开发11.22.33.44,但我实际上不能使用主机名来访问它。 (域显然只指向活服务器) 我刚刚创build了开发服务器,但是我无法访问这两个子域。 我的机器上有一个主机文件设置,指向主机的域名: 11.22.33.44 a.live.com 11.22.33.44 b.live.com 我启用了这两个站点(它们都出现在/ etc / apache2 / sites-enabled),但是由于某种原因,每当我去b.live.com它尝试访问我的开发服务器中的a.live.com。 所以我知道主机正确指向正确的服务器。 此外,当我禁用a.live.com然后b.live.com正确去到正确的子域。 所以它看起来好像阿帕奇以某种方式采取我所投入的任何领域,并以某种方式sorting他们想要的顺序…这是我的虚拟主机文件的一个例子 <VirtualHost *:80> ServerName a.live.com DocumentRoot /var/www/a/ <Directory /> Options FollowSymLinks AllowOverride all </Directory> </VirtualHost> b虚拟主机文件是完全一样的,但有明显的变化。 一些额外的注意事项:开发使用Apache 2.4,而实际使用2.2这就是为什么我不能只复制和粘贴的东西= /(我们计划最终推到2.4,但我们首先想运行一个开发服务器,并确保一切正常正确) 任何帮助将不胜感激。 我不熟悉Apache重写,所以不知道我是否做错了什么。 我已经做了一些关于服务器故障的search,以下是一些常见问题的答案:我跑了 apachectl restart 改变了一切后。 (从我所知道的优雅有时会错过的东西,所以我做了一个完全重启,而不是)我也跑了configtest,它说,语法是好的 先谢谢你。

Apache使用不正确的默认虚拟主机

系统:ubuntu 14.04作为VPS,apache 2.4.7 我有几个虚拟主机设置,听:80和:443端口。 如果我apache2ctl -S它显示不正确的虚拟主机作为端口80上的默认。事实上,如果我浏览到http://default.com ,我从另一个虚拟主机获取内容:一个Apache指定为默认,但shouldn (客户.com)。 我的设置有什么问题? 我启用的网站是: default.com customer.com apache2ctl -S VirtualHost configuration: *:80 is a NameVirtualHost default server customer.com (/etc/apache2/sites-enabled/customer.com.conf:1) port 80 namevhost customer.com (/etc/apache2/sites-enabled/customer.com.conf:1) port 80 namevhost www.customer.com (/etc/apache2/sites-enabled/customer.com.conf:19) port 80 namevhost www.default.com (/etc/apache2/sites-enabled/default.com.conf:36) port 80 namevhost tools.default.com (/etc/apache2/sites-enabled/default.com.conf:41) port 80 namevhost phpmyadmin.default.com (/etc/apache2/sites-enabled/default.com.conf:57) *:443 is a NameVirtualHost default server […]

configuration2个虚拟主机后,Apache失败

在更改configuration后,Apache不会重新启动。 错误:(98)已经在使用的地址:AH00072:make_sock:无法绑定到地址[::]:80 文件:/etc/apache2/sites-enabled/000-default.conf: Listen 80 <VirtualHost *:80> DocumentRoot /var/www/html ServerName sladie.myserver.com # Other directives here </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/mydomain.com ServerName www.mydomain.com # Other directives here </VirtualHost> 从Apache Docs获得了这个configuration。 任何想法,为什么这是行不通的?