Nginx Wordpress 重写多个子文件夹

Nginx Wordpress 重写多个子文件夹

我目前正在为我们的公司设置新的服务器,我们正在开发许多不同的应用程序,现在我们希望将所有 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。

相关内容