Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
認IIS是不提供URL重寫模塊的。請注意,不要將IIS默認的HTTP重定向理解為url重寫。
url重寫,是要從iis的應用市場下載url重寫組件才可以的。
URL重寫工具的下載地址: 64位版本 32位版本
比如我樣實現訪問www.demo.com/1.aspx自動跳到新地址www.demo.com/1
規則設置如下:
如下圖:
代碼:
<system.webServer> <rewrite> <rules> <rule name="test" stopProcessing="true"> <match url="shop/(.*).aspx" /> <action type="Redirect" url="/shop/{R:1}" /> <conditions> </conditions> </rule> </rules> </rewrite> </system.webServer>
那如果要加動態頁面怎么辦???莫慌,莫慌,看下圖:原鏈接:http://en.amusechina.cn/en/ProductDetail-2.0.aspx?proId=1159&cateId=99現鏈接:http://en.amusechina.cn/product1159/99.html
填寫內容 ->
名稱:隨意
模式:(.*) ;代表全部,任意,無論是否字符都匹配
條件:{HTTPS};https,模式^OFF$,代表https關閉,也就是沒有;;;{HTTP_HOST}:填寫要匹配的域名,不能其他的域名訪問到也重定向至這個https,邏輯分組全部匹配,任意匹配是滿足一個條件即可進行下面處理
操作類型:重定向
重定向URL:https://www.example.com/{R:1}
結果相當于 訪問 http://www.example.com/……. 重定向至 https://www.example.com/…….
模式:^blog/(.*)
類型:重寫
目標URL:http://127.0.0.1:3001/{R:1}
結果:訪問:http://www.example.com/blog/index.html —> http://127.0.0.1:3001/inde.html
當然這個127.0.0.1指的是服務器的本地,而不是訪問者電腦本地,這樣使用,可以防止開發太多端口,引起安全問題
模式:(.*)phpf$:代表訪問的文件以phpf結尾
類型:重寫
目標URL:http://www.example.com/{R:1}.php
結果:訪問:http://www.example.com/dir/loginphpf —> http://www.example.com/dir/login.php
這樣當后端有其他語言或者不想在前端顯示文件后綴時,可以使用這種方式來進行隱藏,phpf可以自己隨意更改
了需求我們再來說下需要準備的工具和環境:
配置URL分為全局和非全局,下圖,可以看到URL重寫組件內容。
選擇某一個站點中的URL重寫,我們稱之為單獨的非全局。
直接選擇IIS的可以配置全局,所以這里要依靠你自己的判斷和選擇。
在右側點擊添加,然后選擇空白規則,然后進行規則的配置。
這個也是網上一大堆教程最神的地方,很多東西都是缺失的,后者不把代碼貼出來的。。
名稱:Redirect To HTTPS(這個名字你可以自己改)
模式: (.*) 然后勾選忽略大小寫
首先參考上圖中的邏輯分組信息。
輸入類型 模式 是否忽略大小寫 備注
{HTTPS}與模式匹配^OFF$ YES 此項用來匹配你的請求是HTTPS還是HTTP
{HTTPS_HOST}與模式不匹配^(localhost) YES 如果你是本地的localhost不會重定向到SSL
這個也是網上一堆復制粘貼不寫清楚的地方。
在操作屬性中,重定向的URL:https://{HTTP_HOST}/{R:1} ,然后選中 附加查詢字符串以及重定向類型為參閱其他(303 )即可。
其實這些都不難,但是網上很多人寫資料,寫的不清晰也不檢查,導致問了不少問題。
最終效果
原文鏈接:https://www.cnblogs.com/wer-ltm/p/10190535.html
RL REWRITE,翻譯過來就是URL重寫,或者URL重定義。在asp+iis的網站開發模式中,可以實現如將http://xxxxxx.cn/news.asp?id=220 變成http://xxxxxx.cn/220.html 的形式。例如某條新聞的實際網址是http://xxxxxx.cn/news.asp?id=220 ,通過URL重寫之后,我們就可以直接輸入 http://xxxxxx.cn/220.html 的網址,來訪問這條新聞
對于iis服務器,要實現此項功能,需從 http://www.helicontech.com/download/ 網站上,下載Lite Version (free)免費版的軟件,將此軟件安裝于服務器之后,在其安裝目錄上,找到配置文件httpd.ini,用記事本打開,輸入相應的規則。然后,在相應的站點上,ISAPI中,添加此組件,配置完成,功能生效。
2、URL_REWRITE的規則寫法參考:
當我需要將news.asp?id=234映射成news/234.html時,只需設置:
RewriteRule /news/(\d+)\.html /news\.asp\?id=[N,I]
這樣就把 /news/234.html 這樣的請求映射成了 /news.asp?id=234
當有對/news/234.html的請求時:web服務器會把實際請求轉發給/news.asp?id=234
比對于某一個簡單應用可以是:
RewriteRule /news/(\d+)\.html /news/news\.php\?id=[N,I]
這樣就把 http://www.xxxxxx.com/news/234.html
映射到了 http://www.xxxxxx.com/news/news.php?id=234
一個更通用的能夠將所有的動態頁面進行參數映射的表達式是:
把 http://www.xxxxxx.cn/foo.php?a=A&b=B&c=C
表現成 http://www.xxxxxx.cn/foo.php/a/A/b/B/c/C
RewriteRule (.*?\.php)(\?[^/]*)?/([^/]*)/([^/]*)(.+?)? (?2&:\?)=?5: [N,I]
3、使用URL重寫功能的好處:
首先,有助于增加網站的安全性,因為它隱藏了諸如asp php jsp等相關的服務器技術,以最原始的html文件形式,呈現于客戶。
其次,在平臺移植時,不會影響各頁面的瀏覽。如將news.asp?id=123轉移news.php?id=123,即將asp平臺轉移php,如使用此URL重寫,這個頁面的網址就是news/123.html。
其它方面,方便URL引用,有助于搜索引擎的枚舉。
注意服務器上不要亂設置
*請認真填寫需求信息,我們會在24小時內與您取得聯系。