WordPress 修改固定連接出錯(apache2)

1.背景html

爲了方便,基於wordpress搭建了一個博客平臺,使用一段時間後,對於wordpress的默認的鏈接地址配置很是有意見,其形如"?p=123"的表示,可讀性太差,徹底沒法從地址上了解出文章的任何信息,感受被加密了似的。WordPress強大的後臺管理功能提供了便捷的修改方法,"設置"–>"固定連接",可是本站在修改後,發現除了主頁以外,其它文章或頁面均沒法正常訪問了。到底怎麼回事?正則表達式

主機VPS:Ubuntu 13.10 x86 Apache/2.4.6 (Ubuntu) Server,安裝了wordpress的必須的軟件包數據庫

2.相關知識介紹apache

固定連接的修改,涉及到Apache對於訪問地址的動態解析,而與此密切相關的是mod_write模塊。其實,WordPress主頁上都已經說明了:Apache mod_rewrite 模塊(可選,用於支持「固定連接」和「站點網絡」功能)。服務器

2.1 mod_rewrite網絡

mod_rewrite 提供了基於正則表達式規則動態修改傳入的請求的 URL 的方法。 這容許你以本身喜歡的任意方法映射任意 URL 到你的內部 URL 結構。它支持無限的規則,以及爲每一個規則附加條件,從而提供了一個真正靈活且強大的 URL 操做機制。URL 操做能夠依賴於各類測試,例如服務器變量,環境變量,HTTP 頭,時戳,甚至外部數據庫查詢等,以便完成 URL 單元匹配。這個模塊在服務器上下文 (httpd.conf),虛擬主機上下文 (<VirtualHost> 指令塊),目錄上下文 (.htaccess 文件和 <Directory> 指令塊) 對完整的 URL (包含目錄信息部分和查詢字符串部分) 操做。 重寫結果能夠致使新的規則處理,內部的後續處理,外部請求重定向,甚至透過內部代理, 這取決於你爲規則附加的標誌。通常而言,mod_rewrite模塊的生效,都是基於相關轉向規則的。而轉向規則通常會被寫入兩個位置:ide

是將規則寫在httpd.conf中,這樣效率比較高,但缺少靈活性。wordpress

是寫在.htaccess文件中,將該文件放到須要運用該重寫規則的網站目錄的根目錄便可。wordpress則經過.htaccess來實現"固定連接"。測試

2.2 .htaccess文件網站

.htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。經過htaccess文件,能夠幫咱們實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、容許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能。即,在一個特定的文檔目錄中放置一個包含一個或多個指令的文件, 以做用於此目錄及其全部子目錄。做爲用戶,所能使用的命令受到限制。管理員能夠經過Apache的AllowOverride指令來設置。

3 相關可能性

既然瞭解到其與mod_write相關,那麼剩下的就是考慮mod_write功能的沒法實現,到底有哪些因素可能致使。目前網絡上概括了三個最可能的狀況。

mod_rewrite模塊沒有加載,模塊沒有加載的話,必然沒法進行URL映射了。

相關配置沒有設置,致使mod_rewrite模塊沒法對相應的目錄應用新的規則

.haccess文件的權限不足,大多數狀況下,.htacess和mod_rewrite模塊是配合使用的。

根據這三種可能性,咱們能夠一一進行排除。

3.1 加載mod_rewrite模塊

     

a2enmod rewrite       service apache2 restart

3.2 放開目錄的重寫的權限

仍然是配置/etc/apache2/sites-available/www.xxx.conf,查看兩處,看去AllowOverride是否被設置爲All,若是是None,則設置爲All。

<Directory />

      Options FollowSymLinks

      AllowOverride All

</Directory>

以及

<Directory "/var/www/html">

      ......

      AllowOverride All

      ......

</Directory>

3.3 查看.htaccess的權限

這個是本站在修改固定連接時,遇到的問題,默認的.htaccess並無寫權限,那麼即便容許mod_rewrite對wordpress目錄進行規則重寫,其也沒法將規則寫入.htaccess文件中。首先查看wordpress的目錄下有沒有.htaccess文件,若是沒有,則建立一個。

1

touch .htaccess

而後,對.htaccess文件進行受權。

1

chmod  755 .htaccess

即將該文件的權限轉移給apache用戶,apache用戶是網站運行時,默認使用的用戶,而後再將.htaccess的寫權限授予apache用戶組,主要是爲了避免必要的麻煩。其中,文件屬主是默認擁有寫權限的,不須要再受權。

3.4 驗證

完成了上述的步驟以後,咱們能夠再次訪問網站,發現改變"固定連接"後,網站能夠無障礙地訪問了。

4 總結

Apache的mod_rewrite的功能太強大了,咱們瞭解到的還只是其中的一小部分,結合相關規則,其幾乎能夠隨意地對網站的訪問進行重定向。

相關文章
相關標籤/搜索