我知道还有其他与此类似的线程,但我已经尝试了几天,无法完成,目前,在 Ubuntu 18 上使用以下 nginx 配置
server {
listen 80;
root /var/www/html/wordpress/public_html;
index index.php index.html;
server_name "example.com";
access_log /var/log/nginx/SUBDOMAIN.access.log;
error_log /var/log/nginx/SUBDOMAIN.error.log;
location /blog {
index index.php index.html index.htm;
try_files $uri $uri/ /blog/index.php?q=$uri&$args;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}}
这是我的文件夹当前结构
- /var/www/html/wordpress/public_html -> 包含文件夹 blog 和一个简单的 index.html (不提供 wordpress 服务)
- /var/www/html/wordpress/public_html/blog -> 是我的 wordpress 文件位置
但是,有两个错误的部分我需要解决。
- 它显示“mysite.com/blog”没问题,但是当我点击任何博客或网址时 - >它显示“example.com/?p = 1”,因此导致位置/(“example.com”)的简单index.html
- 我也无法访问 wp-admin,如果我输入“example.com/blog/wp-admin”->“http://example.com/wp-login.php?redirect_to=http%3A%2F%2Fexample.com%2Fblog%2Fwp-admin%2F&reauth=1-> 然后出现 404,它将重定向到此处
太感谢了。
更新 2: 我尝试将 WP_SITEURL 更改为 example.com,将 WP_HOME 更改为 example.com/blog,还修改了 mysql wp-options 表中的这 2 条记录。但是,当我尝试访问 /blog/wp-admin ->http://example.com/blog/wp-admin/example.com/blog/wp-login.php?redirect_to=http%3A%2F%2Fexample.com%2Fblog%2Fwp-admin%2F&reauth=1-> 404
答案1
你肯定需要
root /var/www/html/wordpress/public_html/blog;
在区块中location /blog {}
此外,该块location ~ \.php$
应如下所示:
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
另外,您需要将 try_files 指令更改为
try_files $uri $uri/ /blog/index.php?$args;