之前搞wordpress的時候經(jīng)常涉及到偽靜態(tài),也就是mod_rewrite這個名詞,然后一開始的時候也不是十分清楚,只知道是用來轉換地址為html改良收錄,今天終于有空找了一篇比較好的文章,發(fā)上來跟各位一起學習下,什么叫做偽靜態(tài)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實現(xiàn)這樣的URL:
http://xxx.com/0725.htmlhttp://xxx.com/0726.htmlhttp://xxx.com/0727.html…
上面鏈接的意思,就是顯示07月25日的歷史上發(fā)生了什么事情,類似這樣。這樣看起來就很美觀、整齊了,貌似生成html了。然,他們地址實際是:
http://xxx.com/index.php?today=0725http://xxx.com/index.php?today=0726http://xxx.com/index.php?today=0727…
現(xiàn)在我就是要實現(xiàn)把 index.php?today=為靜態(tài)。以下是代碼:
1..htaccess 文件
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)\.html$ /index.php?today=$1
粗體字這里我說明一下,其它的按這個格式吧,具體我現(xiàn)在也不理解。
[0-9]的意思是,參數(shù)只能是0~9這些數(shù)字,如果你要包含任何字符,就改為:
RewriteRule ^(.+)\.html$ /index.php?today=$1
這里[0-9]改為了. ,這個.就代表任意字符
例子
至從網(wǎng)站升級后,由于采用了自定義鏈接名稱和目錄式訪問,以前網(wǎng)站做的偽靜態(tài)頁,全是.html為擴展名的靜態(tài)頁,現(xiàn)在百度和Google收錄的網(wǎng)址都是以前的偽靜態(tài)頁,網(wǎng)站升級后,訪問量突然少了很多很多,原來是網(wǎng)址不能達到正常的頁面,難怪最近一段時間GG全是雞蛋,我一直在研究如何寫.htaccess訪問規(guī)則,一直沒成功,很是郁悶啊。今天上午睡覺起來,看到QQ群里油菜正在抱怨,也是網(wǎng)址不能到達的原因,哈哈。我看到這個消息突然靈感來了,我說看一下以前Sablog1.6的.htaccess文件,看一下以前的轉發(fā)規(guī)則是怎么寫的,我拿來改一下不就可以了么,于是說動就動,去論壇找了一下.htaccess規(guī)則內容,拿來改了改,中途還是沒成功,但是讓我看到希望,再改,最后終于搞定了。兼容了以前搜索引擎收錄的網(wǎng)址。哈哈哈。。
下面來分享一下:
# BEGIN Sablog-X
<IfModule mod_rewrite.c>
RewriteEngine On
#升級前1.6的偽靜態(tài)網(wǎng)址
RewriteRule ^show-([0-9]+)-([0-9]+)\.html$ index.php?action=show&id=$1&page=$2
#防盜鏈
RewriteCond %{HTTP_REFERER} !^http://www.samool.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.samool.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://samool.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://samool.com$ [NC]
RewriteRule .*\.(jpg|mp3|rm|wma|exe|rar|zip)$
http://www.samool.com/images/error.gif [R,NC]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [S=13]
# 只帶月份的歸檔
RewriteRule ^date/([0-9]{6})/?([0-9]+)?/?$ index.php?action=article&setdate=$1&page=$2 [QSA,L]
# 無分類翻頁
RewriteRule ^page/([0-9]+)?/?$ index.php?action=article&page=$1 [QSA,L]
# 分類
RewriteRule ^category/([0-9]+)/?([0-9]+)?/?$ index.php?action=article&cid=$1&page=$2 [QSA,L]
RewriteRule ^category/([^/]+)/?([0-9]+)?/?$ index.php?action=article&curl=$1&page=$2 [QSA,L]
# 歸檔、高級搜索
RewriteRule ^(archives|search|article|links|about)/?$ index.php?action=$1 [QSA,L]
# 用戶注冊、登陸
RewriteRule ^(register|login)/?$ cp.php?action=$1 [QSA,L]
# 全部評論、標簽列表、引用列表 帶分頁
RewriteRule ^(comments|tagslist|trackbacks|article)/?([0-9]+)?/?$ index.php?action=$1&page=$2 [QSA,L]
# tags
RewriteRule ^tag/([^/]+)/?([0-9]+)?/?$ index.php?action=article&item=$1&page=$2 [QSA,L]
# 文章
RewriteRule ^archives/([0-9]+)/?([0-9]+)?/?$ index.php?action=show&id=$1&page=$2 [QSA,L]
# 用戶
RewriteRule ^uid/([0-9]+)/?([0-9]+)?/?$ index.php?action=article&uid=$1&page=$2 [QSA,L]
RewriteRule ^user/([^/]+)/?([0-9]+)?/?$ index.php?action=article&user=$1&page=$2 [QSA,L]
# 地圖文件
RewriteRule sitemap.xml sitemap.php [QSA,L]
# 自定義鏈接
RewriteRule ^([^/]+)/?([0-9]+)?/?$ index.php?action=show&alias=$1&page=$2 [QSA,L]
</IfModule>
# END Sablog-X