.htaccess 未在 Ubuntu 14.04 (Apache 2.4.7) 中加载
Posted
技术标签:
【中文标题】.htaccess 未在 Ubuntu 14.04 (Apache 2.4.7) 中加载【英文标题】:.htaccess not being loaded in Ubuntu 14.04 (Apache 2.4.7) 【发布时间】:2014-11-07 02:18:21 【问题描述】:我正在尝试在 Ubuntu 14.04 (Apache 2.4.7) 中使用 .htaccess
文件。
这是我的.htaccess
的样子
# 1 YEAR
<FilesMatch "\.(ico|svg|woff|eot|ttf)$">
Header set Cache-Control "max-age=31536000, public"
</FilesMatch>
# 1 WEEK
<FilesMatch "\.(jpg|png|gif|css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# Add correct content-type for fonts
AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType font/x-woff .woff
AddType image/svg+xml .svg
# Compress compressible fonts
AddOutputFilterByType DEFLATE font/ttf font/otf image/svg+xml
我使用 a2enmod rewrite
启用了 mod_rewrite
然后我编辑/etc/apache2/apache2.conf
如下
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AccessFileName .htaccess
但是.htaccess
文件仍未加载。如果我在.htaccess
文件中添加乱码,一切仍然正常。 .htaccess
位于/var/www/
。
这是apache2ctl -S
的输出
VirtualHost configuration:
*:80 is a NameVirtualHost
default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost edmhunters.com (/etc/apache2/sites-enabled/edmhunters.com.conf:1)
alias www.edmhunters.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
我错过了什么?
这是apachectl -t -D DUMP_MODULES
的输出
Loaded Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
expires_module (shared)
filter_module (shared)
headers_module (shared)
mime_module (shared)
mpm_event_module (shared)
negotiation_module (shared)
rewrite_module (shared)
setenvif_module (shared)
status_module (shared)
wsgi_module (shared)
【问题讨论】:
您是否尝试在域“edmhunters.com”上使用它,如果是,您需要检查该域的edmhunters.com.conf
,并将其 DocumentRoot 视为.htaccess
应该在的位置就是这样。
@Prix 我的edmhunters.com.conf
中有DocumentRoot /home/jaskaran/edmhunters
。我在那里复制了 .htaccess
文件,但现在出现 500 错误。我已将 error.log 添加到我的问题中。
评论.htaccess
的所有行并逐条取消评论,看看是否有任何问题导致问题以及是什么
@Prix 为/etc/apache2/apache2.conf
中的根目录添加AllowOverride All
消除了500 错误。由于我的文档根目录与/var/www/
位于不同的位置,我应该这样做吗?我还看到 .htaccess
文件现在正在加载,但压缩和 Cache-Control 标头仍然无法正常工作。
您是否在服务器中启用了模块以允许它们工作?是的,最好你有每个VirtualHost
的目录选项。
【参考方案1】:
问题是我将.htaccess
文件放在/var/www/
中,而我的网站的DocumentRoot
指向不同的目录。将 .htaccess
文件移动到该文件夹即可解决问题。
【讨论】:
大声笑,我也犯了同样的愚蠢错误,谢谢你的提示:) 花了几个小时才找到它-_-【参考方案2】:apache 默认已关闭 .htaccess。
在/etc/apache2/apache2.conf
你应该可以找到类似的行
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
改成
AllowOverride All
然后重启apache,它应该可以工作了。
如果您愿意,也可以在 sites-enabled
文件夹中逐个站点覆盖
有不止一次的地方 AllowOverride None,搜索 AllowOverride
【讨论】:
正如问题中提到的,我已经按照你的建议做了。 是的,我确实重启了服务器。 为我工作。我一遍又一遍地检查站点可用的配置(现在必须以 *.config 结尾才能工作)。以上是关于.htaccess 未在 Ubuntu 14.04 (Apache 2.4.7) 中加载的主要内容,如果未能解决你的问题,请参考以下文章
未在 ubuntu 14.04 上安装用于 rails 的 mysql gem
.htaccess 在 xampp Ubuntu 14.04 上不起作用
Qt WebEngine 未在 Ubuntu 14.04 上与 Qt 5.12 链接
JBoss WildFly 15.0.1 Final 未在具有 2 GB 的 ubuntu 14.04 vServer 上启动:JRE 内存不足