今天下午沒事,像以往一樣開始做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/目錄來存放每個網站的配置文件,這就要根據你自己的設置來添加了)
按照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 ,將下面的代碼粘貼進去:
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
我的博客nginx虛擬機配置文件在 conf/vhost/www.dabu.info.conf 。同樣,在root 那行下面,添加一行:
接著重啟nginx就可以正常訪問了