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

2022-12-23 17:50:51 浏览数 (1)

最近在把很多应用从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/

0 人点赞