- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我们在文件系统上有 /home/example.org/public_html/
目录,它作为我的虚拟主机的文档根目录。
该虚拟主机的相关 httpd 配置如下所示:
<VirtualHost *:80>
ServerName example.org:80
...
DocumentRoot /home/example.org/public_html
<Directory /home/example.org/public_html>
AllowOverride All
...
</Directory>
...
</VirtualHost>
为了防止 htaccess 在文件系统上查找而不丢失 htaccess 功能——至少在 DocumentRoot 级别——我将配置转换为以下内容:
<VirtualHost *:80>
ServerName example.org:80
...
DocumentRoot /home/example.org/public_html
<Directory /home/example.org/public_html>
AllowOverride None
Include /home/example.org/public_html/.htaccess
...
</Directory>
...
</VirtualHost>
区别
AllowOverride None
Include /home/example.org/public_html/.htaccess
让我们看看我们已经完成了什么:
httpd does not waste any time looking for and parsing htaccess files resulting in faster request processing
问题:
Include
指令,Apache 仅在服务启动时或针对每个请求加载 htaccess?httpd.exe -k restart
的情况下刷新 apache conf?最佳答案
首先,请注意检查 .htaccess 通常不是什么大问题,因为磁盘的相关位缓存在内存中。这成为一个问题,例如,您的 web 根目录或目录下有大量目录,并且命中分散在它们之间,因此缓存磁盘 block 的命中率很低。你可能会更好地通过禁用 .htaccess
有选择地为它产生问题的目录树处理。解析 .htaccess 指令当然会产生一点 CPU 负载,但 CPU 通常不应成为服务器的瓶颈。
尽管如此回答您提出的问题;是的,您需要以 root 身份运行命令来加载新配置。不过,与其使用 restart
,不如使用 reload
或(更好的)graceful
。
httpd.exe -k graceful
您可以(但可能不应该)编写一个 cron 作业来定期检查是否需要运行它。在没有大量测试的情况下,我认为这样的事情应该可以作为常规的根 cron 作业运行:
#!/bin/bash
[ /var/run/httpd/http.pid -nt /home/example.org/public_html/.htaccess ] \
&& httpd.exe -k graceful
这当然会产生一些磁盘负载。此负载不会随着流量的增加而增加,但如果您有许多此类包含的文件,则可能会成为一个问题。
安全警告:听起来您正在设置一个非 root 用户可能能够让 Apache 随意使用 Include
指令的情况。这比使用 .htaccess
文件可以完成的功能强大得多,并且相当于根漏洞利用。例如。它可以访问 User
和 LoadModule
指令,而 .htaccess 指令永远做不到。
我建议您将 Included
指令放在 Apache 配置目录中的一个文件中,并且只能由 root 访问。还有其他方法可以确保只有 root 可以编辑 .htaccess 文件,但是将这些文件从用户拥有的区域中取出可以降低您以后无意中再次打开访问权限的可能性。
虽然 .htaccess
机制确实会产生额外的磁盘负载,但它是专为非根用户使用而设计的机制。如果有一种机制可以让不受信任的用户修改配置,并限制检查 .htaccess 文件的频率,那会很好,但如果它存在,我不知道。
关于Apache:在带有 AllowOverride None 的 conf 中包含 htaccess,性能更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32920801/
有各种各样的帖子建议您如何添加 .htaccess 文件以从 URL 中删除 index.php。但是,为了使 .htaccess 文件工作,必须更改 AllowOverride(通常为“All”)。
我已经设置了一个虚拟主机,如下所示 DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog $
我最近使用 WampServer(2.4 版)创建了一个虚拟主机,因此我可以使用 http://yannbergonzat.local url 访问我的本地网站: ServerName ya
我试图在我本地电脑的网站上写一个 .htaccess 文件, 我意识到我需要设置 AllowOverride All 而不是 None 搜索,找到文件/etc/apache2/conf.d/secur
我正在使用 CodeIgniter,并且刚刚在 Ubuntu 10.10 云服务器上安装了一个 LAMP 堆栈。 一切正常,我启用了 Apache userdir 模块,因此我的主目录位于 /home
AllowOverride all 除了编辑 /etc/apache2/sites-available/default 还有其他选项吗,意味着我有超过 两个项目 在我的远程服务器中,当我将默认值编辑为
嗯,这还不是问题,但我不明白为什么 Apache 正在读取 .htaccess文件...我做: grep -R "AllowOverride" /etc 我有: /etc/apache2/apache
我刚刚创建了我的服务器,我需要使用 .htaccess 文件,其中一个可以工作而另一个没有......显然要使 .htaccess 工作,你需要启用 AllowOverride,所以我在下面做了:/e
有没有办法使用 PHP 来检查 AllowOverride 的值,看看 .htaccess 是否有任何影响? 最佳答案 我不知道有一种干净、直接的方法可以做到这一点。 如果您对要检查的文件夹具有 ht
我有一个在 WAMP 上完美设置的虚拟主机,就像这样... # # Use name-based virtual hosting. # NameVirtualHost *:80 # # Virtual
我已经在我的 Mac (OSX 10.9) 上设置了一个服务器,但它在错误日志中返回了 500 错误和以下消息… [alert] [client ::1] /Users/user/Sites/mysi
我正在远离 AMPPS/MAMP,并希望构建一个尽可能接近生产环境的开发环境。 因此,我在安装了 CentOS 6.4 64 位 os box 的 Mac 上使用 Vagrant/VirtualBox
我最近从 Apache 2.2 更新到 Apache 2.4 并注意到我在某些域上的子目录不再显示(通过 http 访问导致空白页面)。我有 50% 的信心这与将默认 AllowOverride 切换
How to edit httpd.conf file in AMAZON EC2 codeigniter .htaccess in amazon ec2 removal of index.php n
假设我们在文件系统上有 /home/example.org/public_html/ 目录,它作为我的虚拟主机的文档根目录。 该虚拟主机的相关 httpd 配置如下所示: ServerName
我的项目在 Blue 主机共享主机以及我的 XAMPP localhost 中运行良好。 为了测试,我们将文件移动到本地 ubuntu 服务器。但是 .htaccess 在这个 ubuntu 服务器上
所以我在发布我的 ASP.NET MVC 应用程序时遇到了这个错误。它在本地运行良好: " This happens when the site administrator has locked ac
我是一名优秀的程序员,十分优秀!