我目前正在为我们的公司设置新的服务器,我们正在开发许多不同的应用程序,现在我们希望将所有 wordpress 应用程序放在 wp.domain.com/app1、wp.domain.com/app2 等下。
默认设置不起作用的原因是我们想对所有应用程序使用 %postname% 永久链接。
我目前正在通过对每个子文件夹进行重写来进行管理,但我宁愿用一个块重写每个子文件夹location
,这样我就不必在每次将新应用程序上传到服务器时编辑服务器块。
我们也可以上传到子目录,例如 wp.domain.com/appgroup1/app3、wp.domain.com/appgroup1/app6 等。
这是我的 wp.domain.com 配置:
server {
listen 80;
root /usr/share/nginx/html/wp;
index index.php index.html index.htm;
server_name wp.domain.com;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location ~ /(.*)/ {
index index.php;
try_files $uri $uri/ /$1/index.php?$args;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
}
请注意,我们不必使用多站点设置。
答案1
现在是使用正则表达式位置块的时候了:
location ~ /(app1|app2|app3|groupapp1(?:/(subapp1|subapp2|subapp3)))/ {
try_files $uri $uri/ /$1/index.php$is_args$args;
[ ... ]
}
答案2
据我所知,您只需将索引 index.php 保留在整个 server {} 块中并删除所有 /app/ 位置即可。您无需将任何内容重写到 index.php。