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了。