zl程序教程

您现在的位置是:首页 >  Java

当前栏目

WordPress多站点模式 在Nginx下的rewrite配置方法

2023-02-18 16:39:14 时间

最近在把很多应用从Apache转入Nginx下,遇到最棘手的问题莫过于两个平台下rewrite规则的重新调整,下面就拿WordPress为例,和大家分享一下WordPress在多站点模式下,如何配置Nginx中的rewrite规则。

我们在开启WordPress(版本:3.2.1)多站点模式的过程中,会提示我们将一段rewrite写入.htaccess文件中,如下:

RewriteEngine On RewriteBase / RewriteRule ^index\.php$ – [L]

# uploaded files RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin 1wp-admin/ [R=301,L]

1 [L] RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php) 1 [L] RewriteRule . index.php [L]

上面这些规则是应用于Apache的,到了Nginx下是行不通的,我们需要对规则进行一些调整。开始,我从网上找了很多案例进行尝试,没有一个能够正常运行,于是经过一番摸索后,写出了下面的规则,WordPress多站点模式在这套规则下可以正常运行。

下面是我调整后的Nginx下rewrite规则:

location ~ /[_0-9a-zA-Z-]+/wp-admin/$ {     rewrite ^/[_0-9a-zA-Z-]+/wp-admin/$ /wp-admin/ break; } location ~ /[_0-9a-zA-Z-]+/wp-([a-zA-Z-])*\.php {     rewrite ^/[_0-9a-zA-Z-]+/(.*\.php) /$1 last; } location ~ /[_0-9a-zA-Z-]+/wp-(admin|content|includes).* {     rewrite ^/[_0-9a-zA-Z-]+/(wp-(admin|content|includes).*) /$1; } location / {     if (-f $request_filename) {         break;     }     if (!-e $request_filename) {         rewrite . /index.php last;     } }

阳光部落原创,更多内容请访问 http://www.sunbloger.com/