189 8069 5689

zblogurl重写 phpurl重写

url重写怎么保留参数

1、首先打开url进入主页面,在主页面找到设置按钮,点击进入。

创新互联于2013年创立,先为泰和等服务建站,泰和等地企业,进行企业商务咨询服务。为泰和企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

2、其次在设置里面找到重写设置,点击进入重写设置。

3、最后在重写设置页面进行设置保留参数即可。

win200864位安装的ispi_rewrite3,在zblog后台设置分类页伪静态后,前台无法

2008R2不是那么的普及,加上X3版新出不久,所以伪静态的设置教程比较少,今天搞出来了,其实很简单,那么下面给大家简要说明一下。因为iis7.5集成了url重写,那就就方便多了,首先安装好你的dz论坛之后,那么在你的根目录下(当然有些人也把论坛安装到二级目录)创建一个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() 方法来执行 URL 重写;

2).通过自定义HTTP Module或 HTTP Handler来重写 URL;

3).借助正则表达式来重写URL:

理解重写的方式:

创建自定义 HTTP 模块和 HTTP 处理程序是相对简单的任务,包括创建实现正确接口的托管类。HTTP 模块必须实现 System.Web.IHttpModule 接口,而 HTTP 处理程序和 HTTP 处理程序工厂必须分别实现 System.Web.IHttpHandler 接口和 System.Web.IHttpHandlerFactory 接口。创建 HTTP 处理程序和 HTTP 模块的细节超出了本文的范围。要获得详细的背景知识,请阅读 Mansoor Ahmed Siddiqui 的文章 HTTP Handlers and HTTP Modules in ASP.NET。

创建了自定义 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 的过程。比如浏览器发来请求 hostname/101.aspx ,服务器自动将这个请求中定向为 ?id=101。

url重写的优点在于:

l 缩短url,隐藏实际路径提高安全性

l 易于用户记忆和键入。

l 易于被搜索引擎收录

二 实现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

用于指定配置节"RewriterConfig"的处理程序类的名称为”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,该类存在于bin目录下的URLRewriter .dll文件中

配置节"RewriterConfig"内容如下

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开头,后面跟一个或多个数字,并以.aspx结尾。用户也可根据自己的需要自行设定)。

SendTo~/default.aspx?id=$1/SendTo,表示当服务器接收到符合上面条件的请求后如何重写url。此处表示访问defalutl.aspx并传入参数id,其值$1将用用户请求的文件名中的第一个数字来表示。

例如用户输入 hostname/d11.aspx,服务器会把他重写为。换句话说用户输入,实际访问的是。这样就起到了隐藏真实文件名,并便于用户记忆的作用。

2.处理回发

在重写后的url里如果产生回发,例如有一个按钮,又调用了该被重写的aspx,用户浏览器中将会显示该aspx文件实际的地址,也就是。但从用户的角度考虑,如 果单击按钮时突然看到 URL 更改会使他们感到不安。因此必须解决这个问题。

解决方法有二:

(1)自己定义一个Actionlessform类,在aspx中不再使用系统提供的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);

}}}

创建此类并对其进行编译之后,要在 ASP.NET Web 应用程序中使用它,应首先将其添加到 Web 应用程序的 References 文件夹中。然后,要 使用它来代替 HtmlForm 类,做法是在 ASP.NET 网页的顶部添加以下内容:

%@ 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

这样就解决回发问题。

全文完


分享标题:zblogurl重写 phpurl重写
标题来源:http://cdxtjz.cn/article/ddeesid.html

其他资讯