nginx - Nginx 中的多站点 WordPress 重写规则

标签 nginx mod-rewrite wordpress

我正在尝试使用 WordPress 和 Nginx 运行多域博客安装。最后一步是在.htaccess中配置一些重写规则(仅限 apache)用于网络服务器。如何将其转换为 Nginx 重写规则?

RewriteEngine On
RewriteBase /

RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]

最佳答案

nginx rewrite rules example for Wordpress 3 :

server{
    server_name *.example.com;  
    listen 80;
    #on server block
    ##necessary if using a multi-site plugin
    server_name_in_redirect off;
    ##necessary if running Nginx behind a reverse-proxy
    port_in_redirect off;
    access_log /var/log/nginx/example-com-access.log;

    location / {
        root   /var/www/example.com/wordpress;
        index  index.html index.htm index.php;
        rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
        if (!-e $request_filename) {
            rewrite ^.+/?(/wp-.*) $1 last;
            rewrite ^.+/?(/.*\.php)$ $1 last;
            rewrite ^(.+)$ /index.php?q=$1 last;
        }
    }

    location ~* ^.+\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$
    {
        root /var/www/example.com/wordpress;
        rewrite ^/.*(/wp-.*/.*\.(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ $1 last;
        rewrite ^.*/files/(.*(html|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js))$ /wp-includes/ms-files.php?file=$1 last;
        expires 30d;
        break;
    }

    location ~ wp\-.*\.php|wp\-admin|\.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/example.com/wordpress$fastcgi_script_name;
    }
}

关于nginx - Nginx 中的多站点 WordPress 重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3491258/

相关文章:

node.js - Nginx 反向代理映射不重定向

php - 如何在wordpress中进行 session 登录

php - Wordpress 中的哪些 PHP 文件负责创建由 "Add Pages"生成的内页布局?

javascript - 为 wordpress 菜单项添加不同的属性

nginx - 如何确定 FastCGI 读取、发送和连接超时的正确值?

node.js - 502 : Nodejs app via Nginx proxy Ubuntu 18. 04

apache - 使用 .htaccess 通过 index.php 重新路由所有请求,除了特定的一组请求

regex - 除非明确允许,否则如何配置 Apache 重写规则以将所有请求重定向到 404

.htaccess - 需要此 Htaccess 重写规则的帮助

magento - Magento Enterprise 上的高流量期间 Nginx + PHP-FPM 变慢