![由于根 URL 没有默认索引页,默认 WordPress .htaccess 重写会导致加载默认服务器页面](https://linux22.com/image/784849/%E7%94%B1%E4%BA%8E%E6%A0%B9%20URL%20%E6%B2%A1%E6%9C%89%E9%BB%98%E8%AE%A4%E7%B4%A2%E5%BC%95%E9%A1%B5%EF%BC%8C%E9%BB%98%E8%AE%A4%20WordPress%20.htaccess%20%E9%87%8D%E5%86%99%E4%BC%9A%E5%AF%BC%E8%87%B4%E5%8A%A0%E8%BD%BD%E9%BB%98%E8%AE%A4%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%A1%B5%E9%9D%A2.png)
我真的需要一些帮助。通过测试,我知道这是一个 WordPress 问题。如果我允许 .htaccess 在我的 Wordpress 网站上处理重写,请添加AllowOverride FileInfo
到 https conf 文件允许 .htaccess 处理我的 Wordpress 网站上的重写,我的 WordPress 网站将全部重定向到 AlmaLinux 默认页面,因为根 URL 没有默认索引页。如果我不允许它处理 .htaccess,它可以工作,但我需要使用 .htaccess
这里发生了什么?
这是我的 WordPress 网站.htaccess
文件,如果我取消注释,它将被处理AllowOverride FileInfo
,然后它会通过将所有内容重定向到 AlmaLinux 默认页面来破坏 WordPress。这是由 WordPress 本身创建的
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
非常感谢那些能帮助我摆脱困境的人。
答案1
已修复 我应该首先查看 Apache 错误日志。我刚刚查看后发现:
[Wed Mar 29 23:17:59.234743 2023] [rewrite:error] [pid 133333:tid 133444] [client 81.11.11.11:53583] AH00670: Options FollowSymLinks and SymLinksIfOwnerMatch are both off, so the RewriteRule directive is also forbidden due to its similar ability to circumvent directory restrictions : /var/www/www.mysite.com/
搜索错误后我们发现:如果你的服务器关闭了 FollowSymLinks 和 SymLinksIfOwnerMatch,那么重写规则将停止工作
就那么简单!
因此我检查了 Apache conf 文件中我的所有站点,并将以下内容更改
Options None
为:
Options SymLinksIfOwnerMatch
固定的