我有一个位于Nginx反向代理服务器后面的Django网站。我想用WordPress(WP)开始博客,所以我创建了一个运行WP的单独的LAMP服务器(使用PHP-FM)。我希望我网站上的博客URI是“mysite / blog”,以保持良好的SEO分数。为此,我创建了一个nginx虚拟子目录,指向我的LAMP服务器上的WP博客站点。但是当我尝试从我的网站连接到博客时,我一直收到404错误。我怀疑我需要修改我的Apache虚拟主机设置,但我无法弄清楚如何去做。
以下是我的Nginx配置文件的相关部分:
# /etc/nginx/sites-available/mysite.conf
server {
listen 80;
server_name web00.mysite.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name web00.mysite.com;
...
location /blog {
proxy_pass https://cms00.mysite.com;
}
}
以下是我的Apache配置文件的相关部分:
# /etc/apache2/sites-available/vhosts.conf
DirectoryIndex index.php index.html
<VirtualHost *:80>
ServerName "cms00.mysite.com"
Redirect permanent / https://cms00.mysite.com
</VirtualHost>
<VirtualHost *:443>
ServerName "cms00.mysite.com"
DocumentRoot "/var/www/html/mysite.com"
...
<Directory "/var/www/html">
AllowOverride All
Options -Indexes -Includes +FollowSymLinks
Require all granted
</Directory>
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
请注意,WordPress建议您将WP安装到您网站的文档根目录(在我的案例中为/var/www/html/mysite.com),而不是单独的子目录,这就是我所做的。如果将WP安装到文档根目录下的自己的子目录中,许多WP插件将无法工作。
如果我在浏览器中输入“cms00.mysite.com/wp-login.php”,我会按预期获得Wordpress用户登录页面。但是,如果我输入“web00.mysites.com/blog”,我会得到WP的“糟糕!无法找到该页面。”错误。我可以在Apache日志中看到404错误:
... "GET /blog/ HTTP/1.0" 404 ...
我相信我理解为什么会这样。我的请求将作为https :: / cms00.mysite.com/blog传递给WP服务器。但是https://cms00.mysite.com指向包含所有WP文件的文档根/var/www/html/mysite.com。没有'blog'子目录。如果我创建一个,将HTML文件放入其中,然后刷新页面,我会看到该文件。
如何配置Nginx和/或Apache以便我可以使用URI https://web00.mysite.com/blog访问我的WP博客?
答案 0 :(得分:0)
需要做三件事来完成这项工作。首先,您需要将以下行添加到WP服务器上的vhosts.conf文件中:
<VirtualHost *:443>
...
Alias /blog "/var/www/html/mysite.com"
...
</VirtualHost>
接下来,您需要将以下.htaccess文件添加到WordPress根目录:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond $1 !^(wp-login\.php)
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
最后,通过https://cms00.mysite.com/wp-admin登录WordPress管理员,转到常规设置,并确保这两个设置如下所示:
WordPress Address (URL): https://cms00.mysite.com/blog
Site Address (URL): https://cms00.mysite.com/blog