Apache中基于名称的虚拟主机配置似乎会导致“500内部服务器错误”

时间:2020-10-03 作者:Nasser Othman

我有以下问题:我为1个客户端创建了10个WordPress站点,现在他需要我在他的VPS中配置域。

根据我在internet上进行的一些搜索,我需要做的第一件事是在/etc/apache2/sites-available 并使用a2ensite. 完美的我做到了,每个站点的情况如下:

<VirtualHost *:80>
    ServerAdmin (my email)
    ServerName (configured domain)
    ServerAlias (configured domain)
    DocumentRoot /var/www/html/10_sites/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/html/10_sites>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
我的.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteBase /10_sites/
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ $2 [L]
RewriteRule . index.php [L]

</IfModule>
之后,我不得不去网站更改网址,我去了那里并将其更改为正确的地址。

在启用了这两种配置之后,它按照我今天想要的方式工作,并在域中打开了站点。所以理论上一切都是对的。

但后来我遇到了一个问题,当我打开网站去行政区时(/wp-admin) 我试着登录,上面写着:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请通过(我的电子邮件)与服务器管理员联系,告知他们发生此错误的时间,以及您在发生此错误之前执行的操作。

有关此错误的详细信息,请参阅服务器错误日志。

1 个回复
SO网友:MrWhite

它将在域中打开站点

你是否测试过内部页面,而不仅仅是主页

配置中一个看似不一致的地方是您已经定义了DocumentRoot /var/www/html/10_sites/ 在您的vHost中,您尚未设置RewriteBase /10_sites/ 在您的.htaccess 文件

除非您的站点文件位于/var/www/html/10_sites/10_sites/ (是的,最后一个目录重复了两次)然后,对于除主页以外的任何请求(包括/wp-admin 页码),自index.php 将找不到。

请求主页,即。http://example.com/, 将正常工作,因为这不依赖中的mod\\u rewrite指令.htaccess 将请求路由到index.php. 相反,这是由mod\\u dir和DirectoryIndex.

我做到了,每个站点的情况如下:

但是,您的配置还有其他不一致之处。。。

如果您使用的是WordPress多站点.htaccess 文件)那么您不应该为每个域定义vHost(至少没有必要,除非您特别需要从get-go中单独的日志文件,或者可能需要自定义每个域的配置-配置中不建议这两种情况)。您只需包括ServerAlias 对于每个域。(无需定义ServerNameServerAlias 相同-正如您的配置所暗示的。)

*1)您发布的配置意味着您对所有域使用单一访问和错误日志。这比为每个域使用单独的日志文件更有效,但是,您需要自定义日志格式,以包括请求的主机名(您尚未这样做)。否则,以后将无法拆分日志。)

但是如果您没有使用WP-multisite,那么就不应该为每个域定义相同的vHost(正如<VirtualHost> 配置)。

相关推荐

WordPress如何在不使用.htaccess的情况下进行重定向?

如前所述here, WordPress具有自动URL重定向。然而not 基于。WordPress保留的htaccessto a minimum.假设您的“siteurl”设置(在GUI中)包含“www.”。如果访问者没有使用“www”,WordPress如何以及在哪个文件中检测并相应地重定向?