之前搞wordpress的時候經常涉及到偽靜態,也就是mod_rewrite這個名詞,然後一開始的時候也不是十分清楚,只知道是用來轉換地址為html改良收錄,今天終於有空找了一篇比較好的文章,發上來跟各位一起學習下,什麼叫做偽靜態mod_rewrite,
以下是關於mod_rewrite的一些知識簡介:
首先要開啟apache的mod_rewrite功能。
在apache目錄的apache\conf 這個文件夾下的httpd.conf文件用記事本打開編輯,找到如下一句:
#LoadModule rewrite_module modules/mod_rewrite.so
將前面的#號去掉,變成:
LoadModule rewrite_module modules/mod_rewrite.so
然後再在同一文件找到下面一句:
AllowOverride None
將其改為:
AllowOverride All
然後關閉並保存文件。這樣一來,Apache的mod_rewrite的功能就被開啟,非常簡單。
下面,我要用mod_rewrite實現這樣的URL:
http://xxx.com/0725.html
http://xxx.com/0726.html
http://xxx.com/0727.html
…
上面鏈接的意思,就是顯示07月25日的歷史上發生了什麼事情,類似這樣。這樣看起來就很美觀、整齊了,貌似生成html了。然,他們地址實際是:
http://xxx.com/index.php?today=0725
http://xxx.com/index.php?today=0726
http://xxx.com/index.php?today=0727
…
現在我就是要實現把 index.php?today=為靜態。以下是代碼:
1..htaccess 文件
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)\.html$ /index.php?today=$1
粗體字這裡我說明一下,其它的按這個格式吧,具體我現在也不理解。
[0-9]的意思是,參數只能是0~9這些數字,如果你要包含任何字符,就改為:
RewriteRule ^(.+)\.html$ /index.php?today=$1
這裡[0-9]改為了. ,這個.就代表任意字符