讓wordpress按“相對路徑”訪問的方法

 wordpress不支持相對路徑,這樣非常不利於多域名的訪問。用什麼辦法可以讓wordpress按相對路徑來運作呢?

很多人的方法是:登錄後臺-setting-options,將wordpress url設成“/”(引號裏面的)就可以了,千萬不能留空,否則系統會讓你重新安裝wordpress,確定後,wordpress url 那一欄是空的,但是在數據庫裏,siteurl的值是“/”。

以上的方法在新版的wordpress裏已經不行了,於是人們又想到在數據庫裏去直接修改相應字段爲“/”。這樣貌似在很多場合下能夠奏效。

但是,按照wordpress的邏輯,是一定要使用絕對路徑的,它的很多函數都會用到home和siteurl兩個變量。簡單的把它們的值改成“/”,這樣導致問題的可能性相當大。更好的辦法是在遵守wordpress按絕對路徑訪問的設計邏輯下,想另外的辦法。

這個辦法其實很簡單,就是先判斷訪問域名,然後把這個域名賦予home和siteurl兩個全局變量。具體方法很暴力也很簡單,不用改數據庫,只需要在 wp-config.php 的最後加上以下語句:

<?php

$home = ‘http://’.$_SERVER['HTTP_HOST'];
$siteurl = ‘http://’.$_SERVER['HTTP_HOST'];
define(‘WP_HOME’, $home);
define(‘WP_SITEURL’, $siteurl);

?>

這樣修改後,在後臺的 setting-options 頁面,只能顯示而不能修改home和siteurl兩個值(因爲它們已經被定義成兩個常量了,呵呵),它們完全是根據訪問域名顯示的。

這個方法既能使wordpress按“相對路徑”的方式訪問全站內容,又符合wordpress那個令人糾結的絕對路徑的設計邏輯。應該是最好的解決辦法了。不過,需要說明的是,這樣修改後,編輯時插入的圖片等媒體文件的路徑仍然是絕對路徑。插入後需要手工改一下,把路徑的域名部分去掉就ok了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章