一條rewrite(伪静态规则)

發現最近很多玩WP的人,都開始注意到了固定網址(固定鏈接)的作用… 一個好的固定網址設定作用極大~

大家都非常推崇一個結構那就是:/%postname%/

為什麼是這個結構?

主要是這個結構足夠的簡潔&清晰….非常便於搜索引擎的網絡蜘蛛進行爬行與收錄,是一個非常優秀的固定結構!

(Ps:我總覺得如果一個網站的目錄結構縱深很大的話,一般機器人給予的收錄權重會變低,覺得該頁不是很重要~並且目錄越深也不利於機器人收錄工作~ 個人感覺,勿噴~)

這不是我今天要說的,我今天想說的是關於上面的這個結構的一條rewrite(只對nginx有效~Only for nginx),因為很多人反應,在lnmp構架上,搭建WP,在改成上面這個結構的時候,都會出現404 Error(Page not found)….這意味這新的結構,跟原來的結構連接不上,這關係到偽靜態的設置.

先介紹一下什麼是偽靜態:伪静态通俗点说就是假的静态页面,也就是通过各种技术手段,让动态页面的URL看上去和静态页面的一样。动态页面的URL的一个典型特征就是带有参数,所以URL中带有?,而伪静态的主要目的就是去掉URL中的?

很明顯的: 1. 伪静态有利于搜索引擎优化 2. 更好的用户体验 !

因為nginx與apache不同,並不像apache那样要在网站根目录建立.htaccess文件,在nginx下.htaccess文件是无效的,需要向nginx.conf中的server项目添加rewite规则,或在conf目录下建立.conf文件,在nginx.conf中include它也是可以~

我目前使用著一個外掛就是:WP-Supercache——這是WP-Cache的改进版本,为博客生成Html静态化文件,优化访问速度.(Ps:這個是我目前使用的加速外掛之一,BTW!這東西真的很不錯哦~)

但是好像這個外掛跟上面這個結構的正常rewrite有所衝突,所以需要重寫~

直接貼出該rewrite~

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
{
expires 30d;
}
location /
{
autoindex off;
set $wp_super_cache_file ”;
set $wp_super_cache_uri $request_uri;
if ( $request_method = POST )
{
set $wp_super_cache_uri ”;
}
if ( $query_string )
{
set $wp_super_cache_uri ”;
}
if ( $http_cookie ~* “comment_author_|WordPress|wp-postpass_” )
{
set $wp_super_cache_uri ”;
}
if ( $wp_super_cache_uri ~ ^(.+)$ )
{
set $wp_super_cache_file /wp-content/cache/supercache/$http_host/$1index.html;
}
if ( -f $document_root$wp_super_cache_file )
{
rewrite ^(.*)$ $wp_super_cache_file break;
}
if (-f $request_filename)
{
expires 30d;
break;
}
if (!-e $request_filename)
{
rewrite ^(.+)$ /index.php last;
}
}

拷貝,粘貼到記事板上,另存為任意名的.conf檔案~ (e.g. example.conf)

然後找到nginx的程序目錄,我這裡是:/usr/local/nginx

進入conf目錄,上傳你剛才編輯完的.conf檔案,然後修改一下nginx.conf這個文檔~

具體改那裡?其實把你剛才那個檔案include進去就行了,也可以直接把上面的規則直接貼到這個檔案上,但我不太喜歡這樣,顯得亂,所以另建一個檔案進行include,這樣子,覺得思路比較清晰~

在nginx.conf檔案上找到,下面這裡:

server
{
listen 80;
server_name qinfy.net;
index index.html index.htm index.php;
include location.conf;
include supercache.conf;(我的檔案名就這個,就是添加在這裡咯~ 簡單吧~ ^_^)
root /home/www;
}

include servers/*;
}

OK了,現在可以正常使用上面這個結構了吧….結構很清爽吧?

Leave a Reply

Your email address will not be published. Required fields are marked *