RewriteBase: only valid in per-directory config files 解答:


呵呵,要實現偽靜態必須開啟Apache的重寫模塊,首先要修改http.conf文件,將

#LoadModule rewrite_module modules/mod_rewrite

前面的#去掉就可以了。

然后是針對網站做重寫規則,不過這里有兩種方法,我來給大家介紹一下^_^ (別丟磚啊!)

  1. 直接修改虛擬主機的配置,比如 PHP代碼
    1. <VirtualHost 221.130.187.81:80>   
    2.          **********   
    3.          DocumentRoot /var/www/html/   
    4.          ServerName   tinico.cn   
    5.          ServerAlias www.tinico.cn   
    6.          **********   
    7.      <IfModule mod_rewrite.c>   
    8.        RewriteEngine On  
    9.        RewriteRule ^(.*)/(search|reg|login|index|links)\.html$ $1/index.php?action=$2  
    10.        RewriteRule ^(.*)/(index)-([0-9]+)\.html$ $1/index.php?action=$2&page=$3  
    11.      </IfModule>   
    12. </VirtualHost>  
    其中*號部分省略的內容不在本文討論范圍之內。那么相信懂一點正則表達式規則的朋友已經能很明顯的看出寫法了。紅色部分的$N表示對應於前面匹配規則中的 匹配項,^(.*)/表示的是任意字符,也就是域名了嘛,呵呵,當然你要明確地寫出域名也是可以滴!
  2. 第二種方法就是寫.htaccess文件了,主要是一些朋友沒有服務器的管理權限,比如使用虛擬主機的朋友們。但是前提是必須服務器要支持讀取.htaccess文件。要讓服務器支持的話必須修改http.conf文件,如下 PHP代碼
    1. <Directory "/var/www/html/">   
    2.       Options -Indexes FollowSymLinks   
    3.       AllowOverride all   
    4. </Directory>   
    5.   
    6. <VirtualHost *.*.*.*>   
    7.       *******   
    8.       DocumentRoot /var/www/html/   
    9.       ServerName   tinico.cn   
    10.       ServerAlias www.tinico.cn   
    11.       *******   
    12. </VirtualHost>  
    重點就是針對某個目錄設置AllowOverride屬性,當然,我這里為了簡便,直接全部開啟,也就是上面代碼中的AllowOverride all 具體要根據所需權限合適的選擇開放的程度,要談得更詳細,請上Google搜索,呵呵這個不適本文討論的重點。開放了復寫服務器配置的功能之后就可以在網 站的根目錄下創建一個.htaccess文件了,具體內容如下 PHP代碼
    1. RewriteEngine On   
    2. RewriteBase /   
    3. RewriteRule ^show-([0-9]+)-([0-9]+)\.html$ index.php?action=show&id=$1&page=$2  
    4. ******  
    當然,規則和第一種方法是一樣的,不過這里可以使用RewriteBase /來設置重寫規則的適應范圍為當前目錄下。那么之后的重寫規則就不必像第一種方法那樣設置^(.*)/了,那么為什么我在第一種方法中不這樣寫呢?呵呵因 為第一種方法不能這么寫,要是這樣寫了,apache會告訴你RewriteBase: only valid in per-directory config files,意思就是僅在每個文件夾下的配置文件中使用。

好了,配置完了以后別忘記重起一下apache讓配置生效!

像這樣配置完了以后你不必再考慮如何生成靜態頁面了,或者不必每次更新文章之后都要考慮是不是全部頁面都重新生成了啊,這對於中小型網站特別實用,當然,大型網站還是想想辦法全部生成靜態吧,畢竟偽靜態要消耗那么一點點服務器的資源,呵呵。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM