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了。
本文出自 “結構化思維” 部落格,請務必保留此出處http://yuanxi.blog.51cto.com/2149074/980913