You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache2虚拟主机下.htaccess规则失效,点击链接出现404错误求助

Apache虚拟主机下WordPress内链404问题排查方案

问题描述

在Linux Apache2虚拟主机环境中,修改.htaccess后出现异常:访问myhost.com主页正常,但点击站内链接时返回404 Not Found。这套配置在其他服务器可正常运行,本人为JS开发者,刚接手维护这套遗留WordPress系统。当前.htaccess内容如下:

<IfModule mod_headers.c>
  Header set X-UA-Compatible "IE=edge" "expr=%{CONTENT_TYPE} =~ m#text/html#i"
  Header set X-Content-Type-Options "nosniff"
  <FilesMatch "\.(eot|otf|tt[cf]|woff2?)$">
    Header set Access-Control-Allow-Origin "*"
  </FilesMatch>
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

排查步骤

1. 确认Apache重写模块已启用

执行以下命令启用mod_rewrite模块并重启Apache:

sudo a2enmod rewrite
sudo systemctl restart apache2

如果模块已启用,直接重启服务即可。

2. 检查虚拟主机的AllowOverride权限

找到对应虚拟主机的配置文件(通常位于/etc/apache2/sites-available/目录,如myhost.com.conf),确保网站根目录的配置区块中设置了AllowOverride All,示例:

<Directory /var/www/myhost.com/public_html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

修改后重启Apache生效。

3. 验证.htaccess及目录权限

确保.htaccess文件的所有者为Apache运行用户(通常是www-data),权限设置为644:

sudo chown www-data:www-data /var/www/myhost.com/public_html/.htaccess
sudo chmod 644 /var/www/myhost.com/public_html/.htaccess

同时确保网站根目录权限为755,避免Apache无法读取文件。

4. 同步WordPress固定链接规则

登录WordPress后台,进入「设置」→「固定链接」,选择非默认的固定链接结构(如「文章名」),点击「保存更改」。这会自动刷新WordPress的重写规则,确保与.htaccess配置同步。

5. 调整RewriteBase路径(可选)

如果你的WordPress部署在子目录(如myhost.com/blog/),需将RewriteBase /修改为对应子路径。若部署在根目录,可尝试注释掉RewriteBase /后测试,部分环境无需此规则也能正常运行。

内容的提问来源于stack exchange,提问作者Leonel Matias Domingos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:05:21