程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP入門知識 >> .htaccess文件玩轉Rewrite

.htaccess文件玩轉Rewrite

編輯:PHP入門知識

剛玩網頁的時候,寫的都是靜態頁 http://uicss.cn/about.htm 這樣的結構。
後來想換成 http://uicss.cn/about/
但是又因為不熟悉rewrite,做了如下的調整,手動建立了一堆的文件夾:

這樣的目錄結構,維護起來相當麻煩。每次新加一個頁面,都要開一個文件夾。
其實采用左邊那套結構部署上去,服務器稍做設置,就可以支持我們想要的URL效果。

如何玩 rewrite

首先看看自己的服務器是否支持 .htaccess
如果支持這貨,就不用每次寫條規則就重啟一次服務器了,便於測試。

redirect 301 /test.htm http://uicss.cn/

成功的話,當你訪問 xxx.com/test.htm 的時候,會自動跳到我的博客。
不成功的話,需要開啟一下 .htaccess :

  1. 打開 \conf\httpd.conf ,查找 #LoadModule rewrite_module,將#號去掉,加載該模塊
  2. 打開 \conf\extra\httpd-vhosts.conf ,查找 AllowOverride None,將 None 變更為 All

環境准備完成後,還需要對“模式匹配”中特殊字符在rewrite的解讀做一下了解:

* 代表前面0或更多個字符
+ 代表前面1或更多個字符
? 代表前面0或1個字符
^ 代表字符串的開始位置
^ 在方括號裡代表“非”,例如[^/]代表非斜槓。
$ 代表字符串結束的位置
. 代表任何字符(也就是通配符)
\ 取消後面字符的特殊意思,轉為原義字符。
—— 這部分的理解出自《SEO藝術》第六章末

開始干吧,打開.htaccess的rewrite
RewriteEngine on

把 xxx.htm 文件 替換為 xxx/
RewriteRule ^(.*)\/$ /$1.htm [L]

再給一個例子加深理解,這是將服務器上的 xxx.php 文件 替換成 xxx.html
RewriteRule ^(.*)\.html$ /$1.php [L]

更多用法:

讓所有訪問 www.uicss.cn/xxx/ 的用戶 跳轉到 uicss.cn/xxx/
RewriteCond %{HTTP_HOST} ^www.uicss.cn [NC]
RewriteRule ^(.*)$ http://uicss.cn/$1 [L,R=301]

對指定目錄開啟轉向的代碼:
RewriteBase /top/

帶搜索參數的轉向:
RewriteRule ^search/(.+)?$ /index.php?s=$1 [QSA,L]

目錄末尾補斜線:
RewriteRule ^(.+[^/])$ /$1/ [R]

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved