最新消息:伪静态技术大全博客开通啦!再也不为伪静态东奔西走!更多问题可以反映给博主:野狼,QQ1615241386 QQ交流群:112696646

把一个.htaccess格式的伪静态规则转化为web.config文件实战

伪静态规则实例 野狼 1311浏览 0评论

经常遇到不同伪静态转化的问题,特别是这些年web.config的运用,让很多人头疼不已。我们知道微软的产品一向是比较脑残的,他IIS7.x是有自动转化工具的,但事实上,这个转化工具我只能呵呵了。完全不行。

今天就碰到我们自己的CMS,被人安装到IIS7.5的系统上,机房说规则错误,我一看哪是规则错误,完全就是IIS工具不行。所以没有办法就手动转化一下了。

.htaccess的规则原本是这样的:

<FilesMatch “\.(bak|inc|lib|sh|tpl|lbi|dwt)$”>

order deny,allow

deny from all

</FilesMatch>

RewriteEngine On

RewriteRule ^index.html$ index.php [L]

RewriteRule ^([a-zA-Z0-9\/]+)/([0-9]+).html$ article.php?path=$1/$2.html [L]

#栏目页面排除

RewriteCond $1 !^(admin|yysAdmin|yysadmin|yelangbak|phpMyAdmin|s)

RewriteRule ^([a-zA-Z0-9\/]+)/$ list.php?path=$1 [L]

RewriteRule ^([a-zA-Z0-9\/]+)/list_([0-9]+).html$ list.php?path=$1&p=$2 [L]

RewriteRule ^sitemap.xml$ sitemap.xml.php [L]

手工转化了一下是这样的:

<?xml version=”1.0″ encoding=”UTF-8″?>

<configuration>

<system.webServer>

<rewrite>

<rules>

<rule name=”r1″>

<match url=”^index.html$” ignoreCase=”false” />

<action type=”Rewrite” url=”index.php” />

</rule>

<rule name=”r2″>

<match url=”^([a-zA-Z0-9\/]+)\/([0-9]+).html$” ignoreCase=”false” />

<action type=”Rewrite” url=”article.php\?path={R:1}/{R:2}.html” appendQueryString=”false” />

</rule>

<rule name=”r3″>

<match url=”^([a-zA-Z0-9\/]+)\/$” ignoreCase=”false” />

<conditions logicalGrouping=”MatchAll”>

<add input=”{R:1}” pattern=”^(admin|yysAdmin|yysadmin|s)” ignoreCase=”true” negate=”true” />

</conditions>

<action type=”Rewrite” url=”list.php\?path={R:1}” appendQueryString=”false” />

</rule>

<rule name=”r4″>

<match url=”^([a-zA-Z0-9\/]+)\/list_([0-9]+).html$” ignoreCase=”false” />

<action type=”Rewrite” url=”list.php\?path={R:1}&amp;p={R:2}” appendQueryString=”false” />

</rule>

<rule name=”r5″>

<match url=”^sitemap.xml$” ignoreCase=”false” />

<action type=”Rewrite” url=”sitemap.xml.php” />

</rule>

</rules>

</rewrite>

</system.webServer>

</configuration>

测试了之后,完美匹配。

最后说一下一些转化技巧:

1、自动转化的时候,有些会把article.php 写成 article\.php 从而导致报错。因为这样的链接是不需要转义的。

2、一般问号“?”需要转义,其他的一律不需要。

3、“&”需要写成“&amp; ”要不然会报错的。这个大家一定要注意。

4、.htaccess伪静态格式中的”$1“要改成“{R:1}”。

5、排除某些链接用以下语句,这个也是野狼找了很长时间才找到的,网上关于伪静态的知识真是少:

<conditions logicalGrouping=”MatchAll”>

<add input=”{R:1}” pattern=”^(admin|yysAdmin|yysadmin|s)” ignoreCase=”true” negate=”true” />

</conditions>

其中的一些英文的意思是:conditions 附属条件,意思是这是要满足的一个附加条件;ignoreCase:忽视大小写 ;negate:取消,使作废,这一条是关键,说明是排除的。

转载请注明:伪静态技术博客 » 把一个.htaccess格式的伪静态规则转化为web.config文件实战

您必须 登录 才能发表评论!