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
相关产品推荐
相关产品推荐

