我正在尝试使用带有 nginx 的单个站点配置文件来为子文件夹中的任意数量的 WordPress 安装提供服务器,但根本无法获得漂亮的永久链接。
+ root
+ WordPressOne
+ WordPressTwo
+ WordPressThree
禁用永久链接后,/WordPressOne/?p=12
工作正常。启用永久链接后,/WordPressOne/MyPage/
会导致从根文件夹传递 404。
由于子文件夹中 WP 安装的数量不断变化(它用于开发),我不想经常修改/创建/删除站点配置,我希望它能够正常工作,这样我就可以复制一个新的WordPress 安装到新的子文件夹,设置 WP,并为该安装设置永久链接,而无需重新启动 nginx 或 PHP-FPM。
这是文件夹site.conf
中使用的基本/etc/nginx/sites-available/
内容(它也反映了生产中使用的许多规则):
server {
listen 5000 default;
server_name dev wpdev;
root /vagrant/sites;
client_max_body_size 2m;
expires -1;
charset utf-8;
index index.html index.php;
location ~* ^.+\.(manifest|appcache)$ {
expires -1;
index index.html index.htm;
uwsgi_cache off;
}
location ~* \.(?:rss|atom)$ {
expires 1h;
add_header Cache-Control "public";
}
location ~* ^.+\.(css |js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|eot|mp4|ogg|ogv|webm|txt)$ {
expires max;
access_log off;
index index.html index.htm;
add_header Cache-Control "public";
uwsgi_cache off;
}
location / {
try_files $uri $uri/ /index.php?$args;
uwsgi_cache off;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
uwsgi_cache off;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
add_header "X-UA-Compatible" "IE=Edge,chrome=1";
add_header "Vary" "Accept-Language";
add_header "Access-Control-Allow-Origin" "*";
add_header "Cache-Control" "no-transform";
}
这也用作虚拟机配置的一部分(使用 Vagrant,如您所见),我希望设计师和 WP 开发人员不必担心在 nginx 中更新他们的站点文件。
谢谢!