Apache导致403被禁止,即使在使用与其他域一起工作的DocumentRoot时也是如此

Apache导致403被禁止,即使在使用与其他域一起工作的DocumentRoot时也是如此,apache,webserver,ubuntu-16.04,Apache,Webserver,Ubuntu 16.04,但其他域(位于http://OTHER.example)正在工作,因此我将DocumentRoot更改为其他,并且(重新启动apache2后)错误是相同的 wget http://maydomain.example --2017-04-06 18:21:12-- https://mydomain.example Resolving mydomain.example (mydomain.example)... IP Connecting to mydomain.example (mydomai

但其他域(位于
http://OTHER.example
)正在工作,因此我将
DocumentRoot
更改为其他,并且(重新启动apache2后)错误是相同的

wget http://maydomain.example

--2017-04-06 18:21:12--  https://mydomain.example
Resolving mydomain.example (mydomain.example)... IP
Connecting to mydomain.example (mydomain.example)|IP|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2017-04-06 18:21:12 ERROR 403: Forbidden.

我注意到您正在使用一些Debian衍生工具(可能是Ubuntu 16.04)来为您的开发环境工作。我已经做过很多次了

导致错误的原因可能是var/www/html文件夹是“根目录”的。这意味着root拥有它,而Apache(www数据用户)没有足够的权限访问该内容。有几种解决方案。你可以选择最适合你需要的。我将首先发布我的首选:

  • 使用虚拟主机:使用本地主机可能对某些人有好处。我更喜欢使用以.dev结尾的虚拟主机。然后,我将文档根指向我拥有的文件夹项目,该项目比localhost更容易访问。我希望能轻松做到这一切

  • 更改
    /var/www/html
    将该文件夹更改为www数据用户和www组的权限,并将其chmod 777。警告:在将其上载到生产服务器时,请确保权限正常

  • 将Apache用户更改为root:在所有这些用户中,这是我最不推荐的,但它可以工作


  • 这是虚拟主机的配置。。。请参阅
    重写*
    行,我删除了所有

    more /var/www/html/.htaccess
    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    
    # add a trailing slash to /wp-admin
    RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
    RewriteRule ^(.*\.php)$ $1 [L]
    RewriteRule . index.php [L]
    
    现在正在工作(!)


    感谢@Nomad和@MatíasNavarroCarter提供线索和清单。

    这看起来像是SSL配置的问题。你能分享文件
    /etc/apache2/sites available/default ssl.conf
    的详细信息吗?谢谢你的文件。看起来只有一个虚拟主机在端口443上侦听。您的子域是否有单独的
    配置?或者调用“wget http:/OTHER.example”也会重定向到
    https
    ?您还尝试过设置
    logleveldebug
    ,并跟踪
    ${APACHE_LOG_DIR}/error.LOG
    ?你可能会从那里得到一些线索。嗨@Nomad,我使用“全部默认”。。。但另一个信息是:我们在
    /var/www/html
    a安装了SSL,并使用certbot(允许对所有域和子域进行加密)。。。关于日志等。谢谢,我今天会查看。嗨,是的,使用UBUNTU 16LTS。另一个上下文:/var/www/html与。。。那里的权限都还可以,是第一次检查。。它也是一个虚拟主机。。。我明天会在一些测试之后回来,所以将Apache用户更改为您的用户。你可以这样做:1<代码>sudo nano/etc/apache2/envvars2。使用您的用户名更改apache运行用户和组(www数据)。但如果您的服务器用于生产,则不要这样做。
    more /var/www/html/.htaccess
    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    
    # add a trailing slash to /wp-admin
    RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
    RewriteRule ^(.*\.php)$ $1 [L]
    RewriteRule . index.php [L]
    
    # REMOVED THIS:
    # RewriteEngine on
    # RewriteCond %{SERVER_NAME} =www.oficial.news [OR]
    # RewriteCond %{SERVER_NAME} =oficial.news   
    # RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]