結果點擊一個連結直接404 Not Found。悲劇,看來Apache的Rewrite部分有問題了,完全無視掉了.htaccess檔案!經過檢查Apache的模組,發現Rewrite模組是開啟的狀態,看來是httpd.conf檔案中的配置有點問題了。回想起之前在Ubuntu Server下配置Rewrite也是啟用了一個叫做“AllowOverride”的屬性為“All”才正確開啟了Rewrite,這次手動設定VirtualHost的時候並沒有寫上這兩句,看來就是這個問題了。
立馬輸入 :
#vim /etc/httpd/conf/httpd.conf
找到自己的VirtualHost設定部分,添上
<Directory />
AllowOverride All
</Directory>
上面這段的Directory /的“/”為你的www路徑,如放在“/var/www/html”路徑下就寫為“<Directory /var/www/html>”,以此類推。儲存後重啟httpd服務:
#/etc/init.d/httpd restart
再次進入WordPress,點擊一個連結,成了!問題解決。看來這個“AllowOverride”很不簡單啊!於是上網找了一圈,發現這個是控制.htaccess的關鍵點所在。除了需要在Apache中開啟Rewrite,以及正確設定.htaccess檔案名稱之外,還需要對目錄的AllowOverride進行配置,因為預設情況下AllowOverride值為None,這樣會完全忽略.htaccess檔案。
此外,除了All和None這兩個值之外,AllowOverride還有很多個值,他們的含義分別如下:
AuthConfig
允許使用與認證授權相關的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
FileInfo
允許使用控制文件類型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove* 指令等等)、控制文檔中繼資料的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令。
Indexes
允許使用控制目錄索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。
Limit
允許使用控制主機訪問的指令(Allow, Deny, Order)。
Options[=Option,...]
允許使用控制指定目錄功能的指令(Options和XBitHack)。可以在等號後面附加一個逗號分隔的(無空格的)Options選項列表,用來控制允許Options指令使用哪些選項。
這樣以來,加上All和None,一共是7個可選的值了。看來又增長了不少的見識呀!以後再出現類似問題,不管哪個Linux下,我都能輕鬆找到問題所在了!