Apache偽靜態配置方法有兩種一種是直接在.htaccess使用它需要apache支持,而另一種是直接在httpd.conf中使用性能高于前者.
.htaccess文件應該被用在內容提供者需要針對特定目錄改變服務器的配置而又沒有root權限的情況下。如果服務器管理員不愿意頻繁修改配置,則可 以允許用戶通過.htaccess文件自己修改配置,尤其是ISP在同一個機器上運行了多個用戶站點,而又希望用戶可以自己改變配置的情況下。
雖然如此,一般都應該盡可能地避免使用.htaccess文件。任何希望放在.htaccess文件中的配置,都可以放在主配置文件的段中,而且更高效。
避免使用.htaccess文件有兩個主要原因。
首先是性能。如果AllowOverride啟用了.htaccess文件,則Apache需要在每個目錄中查找.htaccess文件,因此,無論是否真正用到,啟用.htaccess都會導致性能的下降。另外,對每一個請求,都需要讀取一次.htaccess文件。
還有,Apache必須在所有上級的目錄中查找.htaccess文件,以使所有有效的指令都起作用,所以,如果請求/www/htdocs/example中的頁面,Apache必須查找以下文件:
- /.htaccess
- /www/.htaccess
- /www/htdocs/.htaccess
- /www/htdocs/example/.htaccess
總共要訪問4個額外的文件,即使這些文件都不存在。(注意,這可能僅僅由于允許根目錄”/”使用.htaccess ,雖然這種情況并不多。)
其次是安全。這樣會允許用戶自己修改服務器的配置,這可能會導致某些意想不到的修改,所以請認真考慮是否應當給予用戶這樣的特權。但是,如果給予用戶較少 的特權而不能滿足其需要,則會帶來額外的技術支持請求,所以,必須明確地告訴用戶已經給予他們的權限,說明AllowOverride設置的值,并引導他 們參閱相應的說明,以免日后生出許多麻煩。
注意,在/www/htdocs/example目錄下的.htaccess文件中放置指令,與在主配置文件中段中放置相同指令,是完全等效的。
由上我們可以知道,使用.htaccess文件具有性能上的不利之處,所以我們應該盡可能避免使用.htaccess文件,下面介紹一種不使用.htaccess文件進行偽靜態的方法:
Apache 1.x 的用戶請檢查 conf/httpd.conf 中是否存在如下兩段代碼:
LoadModule rewrite_module libexec/mod_rewrite.so
AddModule mod_rewrite.c
Apache 2.x 的用戶請檢查 conf/httpd.conf 中是否存在如下一段代碼:
LoadModule rewrite_module modules/mod_rewrite.so
如果存在,且以#開頭,請刪除#。然后在配置文件(通常就是 conf/httpd.conf或者conf/extra/httpd-vhosts.conf)中加入如下代碼。此時請務必注意,如果網站使用通過虛擬主機來定義,請務必加到虛擬主機配置,即 中去,如果加在虛擬主機配置外部將可能無法使用。改好后然后將 Apache 重啟。
實例:
①.在apache%C5%E4%D6%C3/" target="_blank">apache配置文件httpd.conf中找到:
LoadModule rewrite_module modules/mod_rewrite.so
這句,去掉前邊的注釋符號“#”,如果沒有則添加這句.
②.在代碼:
Options FollowSymLinks
AllowOverride None
下面添加偽靜態代碼,以Wordpress偽靜態為例,代碼如下:
- RewriteEngine On
- RewriteBase /
- RewriteRule ^index.php$ - [L]
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- RewriteRule . /index.php [L]
- //開源代碼Vevb.com
其中/usr/local/apache/htdocs/wwwtest即為要進行偽靜態的網站的根目錄.
③.重啟apache
新聞熱點
疑難解答