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
时间: 2024-09-16 16:04:35

Nginx下WordPress的Rewrite的相关文章

Nginx下WordPress伪静态设置教程

对于Apache和Nginx的对比网上也是一大堆了,这里就不再赘述,以后有机会详细讲解. 相信用Wordpress的博主们都会用到伪静态,伪静态的好处是对搜索引擎友好,看起来也好看. 用虚拟主机的用户大都是用Apache,Apache的伪静态Wordpress支持很好,几乎不用自己去编辑.喜爱折腾,喜爱独立博主们用VPS的还是很多的,Nginx在VPS中作为架设环境还是挺常见,但是用Nginx时Wordpress就变成瞎子一般,这里就怎样在Nginx下设置伪静态. 我们不需要了解怎样写伪静态,不

Nginx下WordPress链接(url伪静态)301永久重定向实现方法_nginx

问题: 在几个blog程序中折腾的结果~ 导致url连续二次变化.这是第三次了. nginx 通过rewrite 使用 "permanent;"参数 成301永久url重定向. 以往的url结构 http://www.jb51.net/post/199/ 现在需要的url结构 http://www.jb51.net/archives/199.html 过程: 学习nginx的配置规则,学习正则表达式(我也没接触过,学呗.) nginx的中文维科:http://wiki.nginx.or

nginx下wordpress子目录伪静态设置步骤详解

网站访问目录为http://show.abc.com/ ,但是wordpress是装在他下面的manage目录中的,所以访问到的首页也该是http://show.abc.com/manage/ 而wordpress默认访问文章的URL是http://show.abc.com/manage/?p=12 的形式,需要做伪静态使文章访问形式为http://show.abc.com/manage/12 在nginx中配置如下: server { listen  80; server_name     s

Nginx下Wordpress的永久链接实现(301,404等)_nginx

其实也是很简单的方法,修改nginx.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;}} 重启ngi

LNMP下WordPress伪静态规则配置

更换了 VPS,就要开始给网站搬家,搬家出现的第一个问题就是 WordPress 的伪静态问题.新的VPS 采用了 LNMP 环境,安装的是 AMH 面板.之前使用的是LAMP环境的 Webmin,但是 Webmin 功能过于臃肿复杂,比较耗内存,而且Nginx 对比 Apache 更高效稳定.所以这次决定采用 LNMP 环境.虽说这样比较折腾,但是只有去折腾才会有意外的收获. Nignx 不支持 .htaccess 伪静态规则,需要修改 Nignx 相应的配置文件添加伪静态规则,以下记录了整个

Nginx中wordpress伪静态规则配置

因为与apache规则有一些不一样,所以我们不能直接使用apache的wordpress规则了. 费话不说多直接上代码  代码如下 复制代码 [root@localhost ~]# cat /etc/nginx/wprw.conf rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last; if (!-e $request_filename) { rewrite ^.+?(/wp-.*) $1 last; rewrite ^.+

wordpress在nginx下的rewrite规则写法

wordpress在nginx下的rewrite规则写法: [root@localhost ~]# cat /etc/nginx/wprw.conf  代码如下 复制代码 rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last; if (!-e $request_filename) { rewrite ^.+?(/wp-.*) $1 last; rewrite ^.+?(/.*.php)$ $1 last; rewrite ^

nginx下的wordpress如何伪静态

  以前用的虚拟主机一直是apache,现在换到vps用的是nginx,原来的wordpress伪静态全部失效,怎么办? 如何在nginx下设置让原来的设置依然有效呢? 经过测试发现 其实在Nginx下配置WordPress的Rewrite还是比较简单的,在location /{------}里面加入 if (!-e $request_filename){ rewrite (.*) /index.php; } 即可实现. 各位朋友试试吧

Nginx下让WordPress支持固定链接的伪静态规则_nginx

Nginx下让WordPress支持固定链接的伪静态规则 要让nginx支持wordpress固定链接非常简单,需要自己进行添加点配置代码: 复制代码 代码如下: location / {if (-f $request_filename/index.html){                rewrite (.*) $1/index.html break;        }if (-f $request_filename/index.php){                rewrite (