我有以下问题:我为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
) 我试着登录,上面写着:
内部服务器错误
服务器遇到内部错误或配置错误,无法完成您的请求。
请通过(我的电子邮件)与服务器管理员联系,告知他们发生此错误的时间,以及您在发生此错误之前执行的操作。
有关此错误的详细信息,请参阅服务器错误日志。
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
对于每个域。(无需定义ServerName
和ServerAlias
相同-正如您的配置所暗示的。)
(*1)您发布的配置意味着您对所有域使用单一访问和错误日志。这比为每个域使用单独的日志文件更有效,但是,您需要自定义日志格式,以包括请求的主机名(您尚未这样做)。否则,以后将无法拆分日志。)
但是如果您没有使用WP-multisite,那么就不应该为每个域定义相同的vHost(正如<VirtualHost>
配置)。