Nginx下WordPress的Rewrite

简介:

最近接触WP Super Cache,该插件要求固定链接必须是重写的,故用到Rewrite。

我的是这样配置的:

/usr/local/nginx/conf/rewrite/wordpress.conf

location / {
    if (-f $request_filename/index.html){
        rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
        rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename){
        rewrite (.*) /index.php;
    }
}

然后在虚拟主机文件里添加

include /usr/local/nginx/conf/rewrite/wordpress.conf;

即可。

完整的vhost的配置文件:

server {
    listen       80;
    server_name  me.52fhy.com;
    index index.php index.html index.htm;
    root /52fhy.com/wordpress/;
    
    location / {
        if (-f $request_filename/index.html){
            rewrite (.*) $1/index.html break;
        }
        if (-f $request_filename/index.php){
            rewrite (.*) $1/index.php;
        }
        if (!-f $request_filename){
            rewrite (.*) /index.php;
        }
    }
    
    location ~ .*\.(php|php5)?$
    {
            #fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires 30d;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires 1h;
    }

    access_log  /www/log/me.52fhy.com.log;
}
  • 2015-12-18 11:42:24更新:
    以上rewrite方法导致后台很多菜单无法访问,现更新。原因是:

    location / {
    #1
    if (-f $request_filename/index.html){
        rewrite (.*) $1/index.html break;
    }
    
    #2
    if (-f $request_filename/index.php){
        rewrite (.*) $1/index.php;
    }
    #3
    if (!-f $request_filename){
        rewrite (.*) /index.php;
    }
    }

    对于后台http://me.52fhy.com/wp-admin/options-writing.php这种链接将直接匹配#3,实际上这时候不需要任何匹配。故可在#2前添加

    if (-f $request_filename){
    break;
    }

    或者全部更新更新为:

    location / {
    index index.html index.php;
    if (-f $request_filename) {
              break;
    }
    if (!-e $request_filename) {
              rewrite . /index.php  last;
    }
    }

另外,在Apache下,利用mod_rewrite来实现URL的静态化。

.htaccess的内容如下:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
目录
相关文章
|
应用服务中间件 nginx Perl
Nginx系列教程(09) - rewrite
Nginx系列教程(09) - rewrite
171 0
|
应用服务中间件 nginx
Nginx rewrite(URL)地址重定向
Nginx rewrite(URL)地址重定向
645 0
|
应用服务中间件 nginx C语言
3分钟教你搞定 nginx 编译安装报错:error: the HTTP rewrite module requires the PCRE library.
3分钟教你搞定 nginx 编译安装报错:error: the HTTP rewrite module requires the PCRE library.
4081 0
3分钟教你搞定 nginx 编译安装报错:error: the HTTP rewrite module requires the PCRE library.
|
5月前
|
搜索推荐 Java 应用服务中间件
Nginx Rewrite 规则
【8月更文挑战第21天】Nginx Rewrite 规则
49 2
|
7月前
|
应用服务中间件 Apache nginx
apache、nginx开启rewrite重写服务及伪静态
apache、nginx开启rewrite重写服务及伪静态
367 4
|
关系型数据库 MySQL 应用服务中间件
Nginx专题:LNMP之WordPress部署
Nginx专题:LNMP之WordPress部署
223 0
Nginx专题:LNMP之WordPress部署
|
8月前
|
应用服务中间件 nginx
百度搜索:蓝易云【Nginx【Nginx核心指令(rewrite指令、实战rewrite 、if指令、set和break指令】】
这些核心指令在Nginx的配置文件中发挥重要作用。使用rewrite指令可以实现URL的重写和重定向,if指令可以根据条件执行不同的操作,set指令可以创建自定义变量并设置其值,而break指令可以中断请求处理流程。理解和灵活运用这些指令,可以帮助我们更好地配置和管理Nginx服务器。
97 1
|
前端开发 应用服务中间件 PHP
nginx之rewrite
nginx之rewrite
89 0
|
网络协议 Ubuntu 关系型数据库
树莓派ubuntu20.04+Docker+Nginx+Wordpress个人网站搭建全纪录(超详细,入门友好篇)
前言: 本文基于树莓派4B平台,搭载Ubuntu Server 20.04 LTS版本服务器系统,通过将树莓派服务器连接Ipv6公网网络,利用Docker工具,部署Nginx反向代理与Wordpress网站管理系统,实现网站搭建与异地访问。同时用到了域名管理、DDNS、MySQl等工具。本文将从服务器镜像烧录开始,将网站搭建过程进行完整的说明记录。 (经验来自互联网,多次试错学习后总结如下,以供参考。) 关键词: 树莓派; Ubuntu ; Ipv6 ;Docker
797 1
树莓派ubuntu20.04+Docker+Nginx+Wordpress个人网站搭建全纪录(超详细,入门友好篇)
|
缓存 搜索推荐 应用服务中间件