剛玩網頁的時候,寫的都是靜態頁 http://uicss.cn/about.htm 這樣的結構。
後來想換成 http://uicss.cn/about/
但是又因為不熟悉rewrite,做了如下的調整,手動建立了一堆的文件夾:
這樣的目錄結構,維護起來相當麻煩。每次新加一個頁面,都要開一個文件夾。
其實采用左邊那套結構部署上去,服務器稍做設置,就可以支持我們想要的URL效果。
首先看看自己的服務器是否支持 .htaccess
如果支持這貨,就不用每次寫條規則就重啟一次服務器了,便於測試。
redirect 301 /test.htm http://uicss.cn/
成功的話,當你訪問 xxx.com/test.htm 的時候,會自動跳到我的博客。
不成功的話,需要開啟一下 .htaccess :
環境准備完成後,還需要對“模式匹配”中特殊字符在rewrite的解讀做一下了解:
* 代表前面0或更多個字符
+ 代表前面1或更多個字符
? 代表前面0或1個字符
^ 代表字符串的開始位置
^ 在方括號裡代表“非”,例如[^/]代表非斜槓。
$ 代表字符串結束的位置
. 代表任何字符(也就是通配符)
\ 取消後面字符的特殊意思,轉為原義字符。
—— 這部分的理解出自《SEO藝術》第六章末
開始干吧,打開.htaccess的rewriteRewriteEngine on
把 xxx.htm 文件 替換為 xxx/RewriteRule ^(.*)\/$ /$1.htm [L]
再給一個例子加深理解,這是將服務器上的 xxx.php 文件 替換成 xxx.htmlRewriteRule ^(.*)\.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]