一. 去掉 index.php
1. 編寫404.php 文件,上傳保存到博客根目錄(和wordpress 的 index.php 在同一個目錄)。文件內容如下;
代碼如下:
<?php
$qs = $_SERVER['QUERY_STRING'];
$pos = strrpos($qs, '://');
$pos = strpos($qs, '/', $pos + 4);
$_SERVER['REQUEST_URI'] = substr($qs, $pos);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include('index.php');
?>
2. 打開IIS管理工具-博客屬性-自定義錯誤-404;404.2;404.3;
類型選擇URL,地址輸入:/404.php 前面的“/”務必保留;
3. 登錄wordpress后臺,在固定鏈接/永久鏈接(Permalinks)設置項目- 自定義結構里去掉index.php
二. 去掉 category
1.修改固定鏈接設置,去掉分類鏈接前綴Category
打開固定鏈接/永久鏈接設置項。在“可選設置”里的“分類地址前綴”里輸入半角字符: “.”;保存即可去掉分類前綴category。
優點:設置簡單,老少皆宜。適用于初建成的博客,或剛打算使用固定鏈接 /永久鏈接的博客。用不著修改代碼,升級之時沒有顧慮;用不著插件,不會增加運行負擔。
缺點:原鏈接無法打開,出現404錯誤。被搜索引擎收錄良好,或分類鏈接有較多外鏈鏈入的博客,可要萬分小心了。不要因為操作簡單、省時省力而損失了大量外鏈及權重。
2、借助Wordpress插件,去掉分類前綴Category:
1、WP No Category Base:作者iDope,是為去除固定鏈接中分類鏈接里的category而開發出來的一款wordpress插件,被下載近5萬次。安裝啟用此插件后,對原來的分類地址做了301跳轉,對SEO優化有好處,把降權風險降到最低。
下載地址:WordPress官方下載;
2、No category parents:作者milardovich,上面插件的升級版,不僅能去掉分類鏈接的前綴category,還能去掉父分類parent-category。例如能把“/category/parent-category/my-category/”換成“/my-category/”形式。
下載地址:WordPress官方下載;
優點:安裝簡單,老少皆宜。無論是初建成的博客,還是正打算使用固定鏈接/永久鏈接的博客,還是被搜索引擎收錄良好的博客。用不著修改代碼,升級之時沒有顧慮。使用301跳轉,把原鏈接進行跳轉。最大程度防止搜索引擎降權,防止原鏈接打不開。
不足:插件或許會造成空間負擔。這里不說是缺點,就是因為,造成的“空間負擔”微乎其微,不應該是缺點。比較在意的就不用,無所謂推薦使用。
3、修改Wordpress函數,去掉分類前綴Category:(3.3.1沒找到對應函數...)
1、找到你Wordpress博客wp-includes文件夾下的category-template.php。
2、打開此文件,搜索(get_category_link()函數里):
$catlink = $wp_rewrite->get_category_permastruct();
在其后,另起一行加入:
$catlink = str_replace(‘/category’ , ” , $catlink);
代碼作用是,使用字符串替換函數,把獲取分類鏈接函數的分類鏈接里的/category替換掉。達到去掉分類鏈接前綴/category的目的。
3、保存上傳到服務器即可。
優點:僅加入一段代碼,性能影響忽略不計。適用于對代碼稍熟悉的博客。
缺點:修改代碼,博客升級還要修改。且原地址仍可以訪問。或會造成谷歌網站管理員工具里提到的,重復的標題。
4、我是怎么去除Category的:
修改固定鏈接地址是網站SEO的大忌,能不動則不動,動一發牽全身。如果已經到了非動不可的地步,提早動,快速動是必須的。動的過程中,要充分考慮到用戶(外鏈鏈入)和搜索引擎權重——使用301跳轉是明智之舉。
1、使用WP No Category Base插件,讓原鏈接地址301跳轉到新地址;
2、耐心等待若干時日,搜索引擎拋棄原地址后,對使用修改Wordpress函數的方式;
3、可以使用第二第三兩者兼顧的辦法。Wordpress插件照樣使,Wordpress函數照樣修改,若干時間后,禁用刪除插件即可。
IIS環境下wordpress中永久鏈接去掉index.php最后發現兩種已成功實現的方案:
第一種方案:
不需要第三方插件cos-html-cache支持,利用服務器有自定義404錯誤頁面的功能解決問題,但前提是你的服務器或者主機有自定義404錯誤頁面的功能。如果是服務器那肯定可以支持,如果是虛擬主機,需你的服務器供應商提供自定義404錯誤頁面選項。你只需創建一個404錯誤頁面,并且寫入下列幾行代碼即可簡單優雅的實現無插件完美支持windows iis主機的永久固定鏈接的偽靜態化地址格式。
具體設置步驟:
1.用DW新建一個PHP文檔,并且頁面屬性里面把編碼設置成UTF-8,在里面寫入下面代碼,保存,命名為404.php。將404.php上傳到網站根目錄。
代碼如下:
<?php
header("HTTP/1.1 200 OK");
$ori_qs = $_SERVER['QUERY_STRING'];
$pattern = '/[^;]+;[^:]+://[^/]+(/[^?]*)(?:?(.*))?/i';
preg_match($pattern, $ori_qs, $matches);
$_SERVER['PATH_INFO'] = $matches[1] . '?' . $matches[2];
$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
$query_args = explode('&', $matches[2]);
unset($_GET);
foreach ($query_args as $arg)
{
$the_arg = explode('=', $arg);
$_GET[$the_arg[0]] = $the_arg[1];
}
include('index.php');
?>
我開始從網上復制該段代碼使用的時候發現出現500錯誤,仔細一看原來是大家轉載代碼的時候都沒有把代碼里面錯誤的單引號修正過來,網上流傳的這段代碼里面不少單引號都是中文全角單引號,需要改成英文半角的才可以。上面的我已經改過了。大家直接復制即可!
2.設置404自定義錯誤指向404.php,一般來說,絕大多數服務器控制面板均提供該選項。
3.進入wordpress管理后臺,設置(Options)-永久鏈接(Permalinks),你就當自己的主機是linux主機使好了,任意、隨便設置自己喜歡的偽靜態地址格式及靜態地址后綴。
例如:
/y%year%/%post_id%.html
/%year%/%monthnum%/%post_id%/
/%year%/%monthnum%/%postname%.html
我用的格式是:/%year%/%monthnum%/%postname%/
第二種方案:
無Rewrite用cos-html-cache實現靜態化
要求:使用cos-html-cache插件
具體下載,設置步驟和使用方法請查看插件作者的說明:cos-html-cache插件鏈接。
用起來有點麻煩,我還是選擇了第一種 :razz: 。
看來大家有點小麻煩,可能我也不知道是怎么回事。我把我正常用的404文件打包了,大家可以下載了試試!