我們把我們的 .htaccess文件放到網(wǎng)站的跟目錄下了;
.htaccess文件的內(nèi)容如下:
RewriteCond %{HTTP_HOST} ask.xxoo.com
RewriteRule ^(index.html)?$ /ask/
RewriteRule ^(.*)list-([0-9]+)-([a-z]+)\.html$ $1/ask/list.php?catid=$2&action=$3
RewriteRule ^(.*)show-([0-9]+)\.html$ $1/ask/show.php?id=$2
RewriteCond %{HTTP_HOST} space.xxoo.com
RewriteRule ^(index.html)?$ /forum/forum.php (注:此處dx系統(tǒng)的二級(jí)域名設(shè)置錯(cuò)誤,少了一步,空間,論壇的二級(jí)域名設(shè)置錯(cuò)誤,上面的問答模塊二級(jí)域名設(shè)置沒有錯(cuò)誤,請(qǐng)看教程四)
錯(cuò)誤原因:原來我設(shè)置錯(cuò)誤的原因是我想直接通過url重寫來做空間、論壇的二級(jí)域名設(shè)置,但是dx裝在根目錄的/forum/文件夾里。這樣也可以設(shè)置二級(jí)域名,但會(huì)報(bào)錯(cuò),比如,論壇雖然可以過于,但是發(fā)帖,等操作連接還是錯(cuò)誤的,會(huì)自動(dòng)吧安裝目錄添加到url中。處處出錯(cuò),其實(shí)一開始我走的道路都是錯(cuò)誤的。
上面只做了問答模塊和空間模塊的url重寫。我們來分析一下代碼。
上面的代碼中有兩個(gè) RewriteCond 段,意思是一個(gè)url地址會(huì)于RewriteCond 后面的正則匹配,如果成功則與對(duì)于RewriteCond 下的RewriteRule 進(jìn)行在匹配,如果還能配的上url重定向的 RewriteRule 第二個(gè)參數(shù)里的url地址了,
url解析流程是這樣的:我們咋地址欄中輸入 ask.xxoo.com ,域名泛解析到我們規(guī)定的ip地址也就是網(wǎng)站上,網(wǎng)站啟用url重寫來過濾url地址,過濾ask.xxoo.com被第一個(gè)RewriteCond命中,然后再與這個(gè)RewriteCond下面所屬的3個(gè)RewriteRule匹配,被第一個(gè)RewriteRule命中,命中返回的是/ask/ 所以ask.xxoo.com被重定向到了ask.xxoo.com/ask/文件夾了
分析代碼:
RewriteCond 后面的 %{HTTP_HOST} 是域名
RewriteCond %{HTTP_HOST} space.xxoo.com 表示地址欄中的域名是否等于space.xxoo.com這里也可以使用正則 如:RewriteCond %{HTTP_HOST} space([1-9]).xxoo.com 這匹配的url包含了space1.xxoo.com space2.xxoo.com space2.xxoo.com .......space9.xxoo.com 這9個(gè)域名
RewriteRule ^(index.html)?$ /ask/ 匹配的是網(wǎng)站但域名ask.xxoo.com或ask.xxoo.com/index.html這兩個(gè)地址: 重定向的是ask.xxoo.com/ask
RewriteRule ^(.*)list-([0-9]+)-([a-z]+)\.html$ $1/ask/list.php?catid=$2&action=$3
匹配地址包含
ask.xxoo.com/list-3-all.html 重定向的是ask.xxoo.com/ask/list.php?catid=3&action=all
ask.xxoo.com/list-45-high.html 重定向的是ask.xxoo.com/ask/list.php?catid=45&action=hight
RewriteRule ^(.*)show-([0-9]+)\.html$ $1/ask/show.php?id=$2
匹配地址包含
ask.xxoo.com/show-3.html 重定向的是ask.xxoo.com/ask/show.php?id=3
ask.xxoo.com/show-21.html 重定向的是ask.xxoo.com/ask/show.php?id=21
。。。。。
總結(jié):
RewriteRule 規(guī)則形式是:
RewriteRule 正則配表達(dá)式 url重定向地址 重定向地址中的參數(shù)都是通過正則用的引用來處理 :
RewriteCond 第一個(gè)參數(shù)中用到的 %{ NAME_OF_VARIABLE } ,服務(wù)器變量。 變量的名字如下表(分類顯示)