新聞中心
url重寫怎么保留參數(shù)
1、首先打開url進入主頁面,在主頁面找到設置按鈕,點擊進入。
創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為泰和等服務建站,泰和等地企業(yè),進行企業(yè)商務咨詢服務。為泰和企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
2、其次在設置里面找到重寫設置,點擊進入重寫設置。
3、最后在重寫設置頁面進行設置保留參數(shù)即可。
win200864位安裝的ispi_rewrite3,在zblog后臺設置分類頁偽靜態(tài)后,前臺無法
2008R2不是那么的普及,加上X3版新出不久,所以偽靜態(tài)的設置教程比較少,今天搞出來了,其實很簡單,那么下面給大家簡要說明一下。因為iis7.5集成了url重寫,那就就方便多了,首先安裝好你的dz論壇之后,那么在你的根目錄下(當然有些人也把論壇安裝到二級目錄)創(chuàng)建一個web.config文件,然后將下面的代碼粘貼進去即可。
?xml version="1.0" encoding="UTF-8"?
configuration
system.webServer
rewrite
rules
rule name="portal_topic"
match url="^(.*/)*topic-(.+).html\?*(.*)$" /
action type="Rewrite" url="{R:1}/portal.php\?mod=topictopic={R:2}{R:3}" /
/rule
rule name="portal_article"
match url="^(.*/)*article-([0-9]+)-([0-9]+).html\?*(.*)$" /
action type="Rewrite" url="{R:1}/portal.php\?mod=viewaid={R:2}page={R:3}{R:4}" /
/rule
rule name="forum_forumdisplay"
match url="^(.*/)*forum-(\w+)-([0-9]+).html\?*(.*)$" /
action type="Rewrite" url="{R:1}/forum.php\?mod=forumdisplayfid={R:2}page={R:3}{R:4}" /
URL重寫有幾種方式
1).通過 HttpContext 類的 RewriteUrl() 方法來執(zhí)行 URL 重寫;
2).通過自定義HTTP Module或 HTTP Handler來重寫 URL;
3).借助正則表達式來重寫URL:
理解重寫的方式:
創(chuàng)建自定義 HTTP 模塊和 HTTP 處理程序是相對簡單的任務,包括創(chuàng)建實現(xiàn)正確接口的托管類。HTTP 模塊必須實現(xiàn) System.Web.IHttpModule 接口,而 HTTP 處理程序和 HTTP 處理程序工廠必須分別實現(xiàn) System.Web.IHttpHandler 接口和 System.Web.IHttpHandlerFactory 接口。創(chuàng)建 HTTP 處理程序和 HTTP 模塊的細節(jié)超出了本文的范圍。要獲得詳細的背景知識,請閱讀 Mansoor Ahmed Siddiqui 的文章 HTTP Handlers and HTTP Modules in ASP.NET。
創(chuàng)建了自定義 HTTP 模塊或 HTTP 處理程序之后,必須將其注冊到 Web 應用程序。為整個 Web 服務器注冊 HTTP 模塊和 HTTP 處理程序僅需在 machine.config 文件中進行簡單的添加即可;而為特定 Web 應用程序注冊 HTTP 模塊或 HTTP 處理程序包括向應用程序的 Web.config 文件中添加幾行 XML。
特別要說明的是,要將 HTTP 模塊添加到 Web 應用程序,應在 Web.config 的 configuration/system.web 部分添加以下幾行:
什么叫url重寫技術?
一 什么是url重寫
URL 重寫是截取傳入 Web 請求并自動將請求重定向到其他 URL 的過程。比如瀏覽器發(fā)來請求 hostname/101.aspx ,服務器自動將這個請求中定向為 ?id=101。
url重寫的優(yōu)點在于:
l 縮短url,隱藏實際路徑提高安全性
l 易于用戶記憶和鍵入。
l 易于被搜索引擎收錄
二 實現(xiàn)url重寫的基本方法
1. 下載ms的URLRewriter.dll,放到你的web程序的bin下
下載地址1:
下載地址2:
download.microsoft點抗 /download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi
下載完成后,在web.config里設置如下:
?xml version="1.0" encoding="utf-8" ?
!--overred--
configuration
configSections
section name="RewriterConfig"
type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /
/configSections
RewriterConfig
Rules
RewriterRule
LookFor~/d(\d+)\.aspx/LookFor
SendTo~/default.aspx?id=$1/SendTo
/RewriterRule
/Rules
/RewriterConfig
system.web
httpHandlers
add verb="*" path="*.aspx"
type="URLRewriter.RewriterFactoryHandler, URLRewriter" /
/httpHandlers
其中
section name="RewriterConfig"
type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /
/configSections
用于指定配置節(jié)"RewriterConfig"的處理程序類的名稱為”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,該類存在于bin目錄下的URLRewriter .dll文件中
配置節(jié)"RewriterConfig"內(nèi)容如下
RewriterConfig
Rules
RewriterRule
LookFor~/d(\d+)\.aspx/LookFor
SendTo~/default.aspx?id=$1/SendTo
/RewriterRule
/Rules
/RewriterConfig
其中關鍵的是這兩句
LookFor~/d(\d+)\.aspx/LookFor
SendTo~/default.aspx?id=$1/SendTo
LookFor~/d(\d+)\.aspx/LookFor表示,用戶輸入的url,d(\d+)\.aspx是url中文件名匹配的正則表達式(此處為字母d開頭,后面跟一個或多個數(shù)字,并以.aspx結尾。用戶也可根據(jù)自己的需要自行設定)。
SendTo~/default.aspx?id=$1/SendTo,表示當服務器接收到符合上面條件的請求后如何重寫url。此處表示訪問defalutl.aspx并傳入?yún)?shù)id,其值$1將用用戶請求的文件名中的第一個數(shù)字來表示。
例如用戶輸入 hostname/d11.aspx,服務器會把他重寫為。換句話說用戶輸入,實際訪問的是。這樣就起到了隱藏真實文件名,并便于用戶記憶的作用。
2.處理回發(fā)
在重寫后的url里如果產(chǎn)生回發(fā),例如有一個按鈕,又調用了該被重寫的aspx,用戶瀏覽器中將會顯示該aspx文件實際的地址,也就是。但從用戶的角度考慮,如 果單擊按鈕時突然看到 URL 更改會使他們感到不安。因此必須解決這個問題。
解決方法有二:
(1)自己定義一個Actionlessform類,在aspx中不再使用系統(tǒng)提供的form 標記
namespace ActionlessForm {
public class Form : System.Web.UI.HtmlControls.HtmlForm
{protected override void RenderAttributes(HtmlTextWriter writer)
{
writer.WriteAttribute("name", this.Name);
base.Attributes.Remove("name");
writer.WriteAttribute("method", this.Method);
base.Attributes.Remove("method");
this.Attributes.Render(writer);
base.Attributes.Remove("action");
if (base.ID != null)
writer.WriteAttribute("id", base.ClientID);
}}}
創(chuàng)建此類并對其進行編譯之后,要在 ASP.NET Web 應用程序中使用它,應首先將其添加到 Web 應用程序的 References 文件夾中。然后,要 使用它來代替 HtmlForm 類,做法是在 ASP.NET 網(wǎng)頁的頂部添加以下內(nèi)容:
%@ Register TagPrefix="skm" Namespace="ActionlessForm"
Assembly="ActionlessForm" %
然后,將 form runat="server"(如果有)替換為:
skm:Form id="Form1" method="post" runat="server"
并將右邊的 /form 標記替換為:
/skm:Form
(2)以上的是繼承個form,第二種方法就是繼承page,這樣你不需要在aspx頁中改任何東西。
代碼:
using System;
using System.IO;
using System.Web;
using System.Web.UI;
namespace URL
{
public class OLPage : Page
{
public OLPage()
{}
protected override void Render(HtmlTextWriter writer)
{
if (writer is System.Web.UI.Html32TextWriter)
{
writer = new FormFixerHtml32TextWriter(writer.InnerWriter);
}
else
{
writer = new FormFixerHtmlTextWriter(writer.InnerWriter);
}
base.Render(writer);
}}
internal class FormFixerHtml32TextWriter : System.Web.UI.Html32TextWriter
{
private string _url; // 假的URL
internal FormFixerHtml32TextWriter(TextWriter writer):base(writer)
{
_url = HttpContext.Current.Request.RawUrl;
}
public override void WriteAttribute(string name, string value, bool encode)
{
if (_url != null string.Compare(name, "action", true) == 0)
{
value = _url;
}
base.WriteAttribute(name, value, encode);
}
}
internal class FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriter
{
private string _url;
internal FormFixerHtmlTextWriter(TextWriter writer):base(writer)
{
_url = HttpContext.Current.Request.RawUrl;
}
public override void WriteAttribute(string name, string value, bool encode)
{
if (_url != null string.Compare(name, "action", true) == 0)
{
value = _url;
}
base.WriteAttribute(name, value, encode);
}}}
把這個文件編譯成dll,并在你的項目中引用它。
然后把項目中的所有aspx文件對應的cs文件中的繼承page類的代碼改寫為繼承OLPage。
例如
public class WebForm1:page
改寫為
public class WebForm1:URL.OLPage
這樣就解決回發(fā)問題。
全文完
網(wǎng)站名稱:zblogurl重寫 phpurl重寫
當前網(wǎng)址:http://fisionsoft.com.cn/article/ddeesid.html