- 带有DSM 7.1.x的Synology服务器(最近从DSM 6.x更新,Synology不建议降级回DSM 6.x)
- 已启用Web工作站,具有HTTP后端服务器:Apache HTTP服务器2.4和PHP:PHP 8.0语言
- 具有这些设置的个人网站HTTP后端服务器:Apache HTTP服务器2.4和PHP:PHP 7.4语言
- 个人网站使用需要.htaccess文件的WordPress 5.x或6.x
问题:/homes/user/www文件夹中的个人网站.htaccess导致403错误
可以删除.htaccess以停止403错误,但个人网站使用WordPress,这需要.htaccess -不能只是删除此文件,因为一些WordPress操作重新创建.htaccess文件(如更改设置〉永久链接)新创建的测试用户案例:临时
- homes/tmp/www文件夹中的“users”组具有775个权限
- homes/tmp/www/.htaccess拥有“用户名”所有者和具有770个权限的“用户”组
- homes/tmp/www/wp-config.php拥有“用户名”的所有者和“用户”组,拥有770个权限
- 即使对homes/tmp/www中的所有文件使用777权限,.htaccess仍然存在403错误
- 删除.htaccess并创建/发布新页面后,查看新页面会导致404错误。
默认.htaccess行
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /~username/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /~username/index.php [L]
</IfModule>
即使.htaccess没有任何代码行,403错误也是存在的。因此,不管.htaccess文件的内容如何,只要它存在就会导致403错误。
有人有办法解决这个问题吗?
2条答案
按热度按时间zc0qhyus1#
看起来您使用的是Apache per-user web directories?如果是这样,那么
/~username
不是一个物理目录(它是您的用户目录的“别名”),您的文档根目录实际上是/~username/
(这实际上会与根目录相对的URL路径混淆)。在这种情况下,您的
.htaccess
应该如下所示:请注意,我已经完全删除了
RewriteBase
指令。然而,如果这是WordPress代码块的一部分(即
# BEGIN WordPress
...# END WordPress
内)注解标记,那么WordPress将尝试覆盖您的更改,除非您采取额外的步骤来防止这种情况。57hvy0tb2#
解偶偶然发现:
编辑Apache2.x的httpd2x.conf(无论为个人网站选择哪一个)
添加以下代码
我尝试了一堆东西,我认为以上是诀窍。