細心的我們發現當在csdn裡輸入hi.csdn.net/**時候,這裡並沒有是一個jsp或者php頁面,被轉向了其他的地方。這裡**可以為使用者的名稱,這樣的實現方式可以有效隱藏地址,傳遞參數等。為每個使用者指派自己的路徑。但是這裡並不是重新導向301,配置錯誤頁面404等。比如www.ttsmm.com 。這裡就做了301,當使用者輸入ttsmm.com時候瀏覽器會301自動跳轉到www.ttsmm.com .
這種實現的方式是偽靜態。 需要一定的靜態規則才能轉向過去。
實現方法:
1.下載urlrewrite,官方:http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip
2.解壓縮檔案,壓縮包內檔案copy到項目中(壓縮包位置 -> 項目位置):
urlrewrite-2.6.0-src/webapp/WEB-INF/lib/urlrewrite-2.6.0.jar -> WebRoot/WEB-INF/lib/urlrewrite-2.6.0.jar
urlrewrite-2.6.0-src/webapp/WEB-INF/urlrewrite.xml -> WebRoot/WEB-INF/urlrewrite.xml
web.xml 配置:
<filter><br /> <filter-name>UrlRewriteFilter</filter-name><br /> <filter-class><br /> org.tuckey.web.filters.urlrewrite.UrlRewriteFilter<br /> </filter-class><br /> </filter><br /> <filter-mapping><br /> <filter-name>UrlRewriteFilter</filter-name><br /> <url-pattern>/*</url-pattern><br /> </filter-mapping><br />
修改urlrewrite.xml
<?xml version="1.0" encoding="utf-8"?><br /><!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"<br />"http://tuckey.org/res/dtds/urlrewrite2.6.dtd"> </p><p><!-- </p><p>Configuration file for UrlRewriteFilter </p><p>http://tuckey.org/urlrewrite/</p><p>--><br /><urlrewrite><br /> <rule><br /> <from>^/([a-z]+)$</from><br /> <to type= "forward" >/world.jsp?id=$1</to><br /> </rule><br /> <rule><br /> <from>^/world/(.*)$</from><br /> <to>/world.jsp?tid=$1</to><br /> </rule><br /> <rule><br /> <from>^/(.*).html$</from><br /> <to>/test1/$1.jsp</to><br /> </rule> </p><p> <outbound-rule><br /> <note><br /> The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)<br /> the url /rewrite-status will be rewritten to /test/status/. </p><p> The above rule and this outbound-rule means that end users should never see the<br /> url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks<br /> in your pages.<br /> </note><br /> <from>/rewrite-status</from><br /> <to>/test/status/</to><br /> </outbound-rule><br /></urlrewrite><br />
rule是url重寫規則,from是顯示出來的地址,to是映射的實際地址,$1是重寫參數,可以為多個,()裡是匹配的Regex.
好了,在項目中建立world.jsp,啟動tomcat,輸入
http://localhost:8080/mysite/world/1
mysite是你的項目名
實際上訪問的是http://localhost:8080/mysite/world.jsp?tid=1
這樣就簡單的實現了偽靜態效果
購買空間的時候,如果你的空間需要偽靜態支援,請務必要問是否支援偽靜態,或者免費開通偽靜態。以免上當!