Nginx下修改WordPress固定链接导致无法访问的问题解决

今天下午没事,像以往一样开始做seo的优化,当然牵扯到永久链接,wordpress提供多种类型的链接形式

1/%year%/%monthnum%/%day%/%postname%/

2/%year%/%monthnum%/%postname%/

3/%year%/%monthnum%/%day%/%postname%.html

4/%year%/%monthnum%/%postname%.html

5/%category%/%postname%.html

6/%post_id%.html

7/%postname%/

我选择了/%postname%.html,伪静态,虽然现在貌似没什么差别了,但还是该下吧。下面就出现了修改固定链接后,访问文章会出现404错误,以前我都是apache做web服务器,所以只要apache下就三个个关键,即

wordpress对目录下的.htaccess拥有读写权限
    固定链接的目录结构需要 Apache服务器的mod_rewrite模块支持,所以在Apache配置文件httpd.conf中将 LoadModule rewrite_module modules/mod_rewrite.so设置为启用。
    同样是Apache配置文件,其中对于站点目录下的AllowOverride None的参数设置为All。当然修改完配置后,一定要重启Apache服务。
    由于是新配置的本地测试环境,2、3两项问题同时出现,逐项更正设置后,固定链接的工作正常。

现在我用的nginix,所以也要修改nginix的ngnix.conf配置文件,让其支持重定向

假设我的wordpress博客是的 server{}段是直接放到放到了nginx.conf  (有的人为了方便管理,都习惯在单独写个vhost/目录来存放每个网站的配置文件,这就要根据你自己的设置来添加了)

代码如下:

vi /your_nginx_path/conf/nginx.conf

按照nginix的正则表达式的规则,可参考:Nginx 的中文维基

  • ^:匹配输入字符的开始位置
  • $:匹配数日字符串的结束位置
  • +:匹配前面的子表达式一次或者多次
  • [0-9]:数字字符范围
  • $1:调用变量

在server{}  字段   中的  “root /websit/wwwroot/;”(这行就是指定网站所在目录的)  这一行的下面 ,添加下面的内容:

代码如下:

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;
    }

rewrite /wp-admin$ $scheme://$host$uri/ permanent;//这行是为了防止打开后台、插件页等打不开的。

保存后,输入    /etc/init.d/nginx restart , 重启nginix。就ok了!

相当于告诉nginix访问这些后按照正则表达式转到其唯一正确的地址,以此打开文章。

貌似/%postname%/会以中文为链接,为了seo,可以考虑一个插件 WP Slug Translate,它会自动换中文标题为英文,不能联网就改为拼音。

貌似官方给出了新的pha100 pha-3,也简单的多。这里假设,我在nginx的conf文件夹下创建个wordpress.conf ,将下面的代码粘贴进去:

代码如下:

location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

我的博客nginx虚拟机配置文件在  conf/vhost/www.dabu.info.conf  。同样,在root 那行下面,添加一行:

代码如下:

include wordpress.conf;

接着重启nginx就可以正常访问了

(0)

相关推荐

  • WordPress中获取页面链接和标题的相关PHP函数用法解析

    get_permalink()(获取文章或页面链接) get_permalink() 用来根据固定连接返回文章或者页面的链接.在获取链接时 get_permalink() 函数需要知道要获取的文章的 ID,如果在循环中则自动默认使用当前文章. 用法 get_permalink( $id, $leavename ); 参数 $id (混合)(可选)文章或者页面的 ID(整数):还可以是文章对象. 默认值:在循环中自动调用当前的文章 $leavename (布尔)(可选)转化成链接是是否忽略文章别名

  • 简介WordPress中用于获取首页和站点链接的PHP函数

    home_url()(获取首页链接) ome_url() 函数用来获取 WordPress 的首页链接. 用法 home_url( $path, $scheme ); 参数 $path (字符串)(可选)在首页链接后边追加的内容,是相对链接. 默认值:None $scheme (字符串)(可选)链接协议,只支持 "http","https" 和 "relative". 默认值:null 返回值 (字符串)返回首页 URL 加上 $path 参数.

  • 详解WordPress中添加友情链接的方法

    友情链接对于一个每个独立博客来说可以说是必须的,有不少人选择在侧边栏加入友情链接栏目,但建立一个独立的友情链接页面也是一个不错的选择.用插件可以轻松做到这一点,但喜欢原生的我,能自己动手解决,还是自己动手解决好.折腾了一下,方法就出来了. 普通方法 建立一个友情链接页面的步骤也是比较简单的,先建立一个新的页面模板,用友链函数调用友链,再加上css美化,事情就完成了. 下面说说具体的步骤 1.建立一个新的模板页面  复制主题中的page.php文件,重命名为links.php. 在页面的顶部加入如

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

    问题: 在几个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

  • WordPress中用于获取文章信息以及分类链接的函数用法

    get_post()(获取一篇文章) get_post() 函数可以根据 ID 查询一篇文章的信息,还能返回循环中的当前文章. 用法 get_post( $post, $output, $filter ); 参数 $id (整数 | 对象)(可选)文章 ID 或者文章对象,如果为空则自动设置成当前文章. 默认值:null(当前文章) $output (字符串)(可选)返回结果的形式,可选: OBJECT:返回一个文章对象 ARRAY_A:返回带键值的数组 ARRAY_N:返回不带键值的数组 默认

  • 如何让PHPnow支持wordpress静态化链接的方法

    PHPnow有一个优势就是直接装好了ZendOptimizer,当然一般人是用不到这个的,暂且略过. 在我的试验中,XAMPP对wordpress静态化是直接支持的.PHPnow虽然也是打开了apache的mod_rewrite模块,但是对wordpress的静态化还要依赖于.htaccess这个文件(有可能XAMPP也是这样). 配置方法如下. 首先到wordpress所在的目录下,找到.htaccess文件,用记事本编辑它. 如果没有这个文件,那就要麻烦一点,你需要先打开记事本,文件另存为,

  • WordPress中转义HTML与过滤链接的相关PHP函数使用解析

    esc_html()(转义 Html) esc_html() 函数用来转义 Html 代码,让 Html 代码不转义. 用法 esc_html( $text ); 参数 $text (字符串)(必须)要转义的字符串. 默认值:None 返回值 (字符串)返回转义后的字符. 例子 echo esc_html( '<a href="http://www.example.com/">A link</a>' ); 上边的代码将输出: WordPress 函数:esc_h

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

    其实也是很简单的方法,修改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

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

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

  • 详解WordPress中给链接添加查询字符串的方法

    查询字符串指的是链接中后边的问号后的查询语句,格式为 key=value,多个查询语句用 & 符号分开.add_query_arg() 函数就是 WordPress 提供的一个方便的函数,可以帮你给一个链接添加一个或者多个查询语句. 有人会问,添加查询字符串直接在链接后边手动追加不就可以了吗?这样有时候可行,但链接如果本身就有查询字符串就会造成格式错误的问题,而且也不利于 PHP 编写管理,而 add_query_arg() 函数帮你把一切都想好了,你只需要给出要添加查询字符串的链接和一个或多个

  • 详解WordPress中过滤链接与过滤SQL语句的方法

    esc_url()(过滤链接) 很多 URL 会有一些小错误,用 esc_url() 函数可以屏蔽或者修正这些错误,并且可以拒绝不安全的协议. esc_url() 函数的工作内容: 默认拒绝不是下面协议的 URL:defaulting to http.https.ftp.ftps.mailto.news.irc.gopher.nntp.feed 和 telnet 删除无效字符和危险的字符 将字符转换成 HTML 实体字符 使用方法 esc_url( $url, $protocols, $_con

随机推荐