<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/bo-blog-rewriteule-httpd/</link>
<title><![CDATA[boblog IIS Rewrite 伪静态规则文件 ]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[学习心得]]></category>
<pubDate>Tue, 24 Aug 2010 08:19:44 +0000</pubDate> 
<guid>https://www.heckjj.com/bo-blog-rewriteule-httpd/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 微软雅黑;">最近投身于PHP研发之中，沉迷于其中无法自拔，总觉得PHP好啊，呵呵。偶尔写博客时，愈发觉得ASP不够爽。虽然ASBLOG是一个优秀的博客程序，虽不忍抛弃，但无奈PHP吸引力更大，于是就决定，转投PHP阵营。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;根据以往的测试经验，我放弃了效率低下的WordPress，选择Bo-blog这个PHP经典范例的博客程序。正好个人也想清理清理日志，于是全部手工迁移，耗费了整整一天的时间完成了这项庞大的任务，不完美之处，就是没能完成评论和留言的迁移，随他去吧，总会再多起来的。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了物尽其用，我打起了URL重写伪静态的主意，询问过空间商，得知我的主机支持ISAPI_Rewrite URL重写组件（自己用了半年了都不知道）。Bo-blog内置了URL Rewrite支持，但只提供了Apache上的.htaccess 这个伪静态规则文件。注释上说，IIS的伪静态规则文件，要自己去论坛找。于是我翻了几页帖子，终于耐不住了，根据那个.htaccess 修改一个吧。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;说干就干，通过对比已有的.htaccess和httpd.ini文件，发现二者配置似乎可以通用，都是RewriteRule关键字后面跟两个参数，第一个是伪静态地址，第二个是重写到的地址，使用正则表达式完成。于是我极有想象力地直接复制过去，测试……不管用……呃……</span><span style="font-family: 微软雅黑;"><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;怎么回事呢，重启服务器还是不行……嗯……引用《神探狄仁杰》上狄国老的话“我们一定是忽略了什么细节”，嗯，对，细节。于是我找来了DZ论坛上的httpd.ini文件仔细比对发现二者果然存在不同，在.htaccess 中没有匹配主机地址，只匹配了相对路径，而在httpd.ini文件中，需要匹配完整的HTTP地址，原来如此，于是RewriteRule ^t就被批量替换成了RewriteRule ^(.*)/。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;查阅了httpd.ini的参考后发现，如果需要忽略大小写，可以在每一条规则最后加上[I]，这个大概是ignore的缩写吧。然后测试……晕，还是不管。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;一定还有什么地方不一样。于是我写了一条超简单的规则，把index.php重写为index.html，测试，忽忽，终于工作了~既然这样，问题就一定出在后面的参数上面了。先从那几个特殊符号下手。正则表达式中都是用“&#92;”进行转义的，于是我就把后面的问号、连接号统统给转义了，果然，不再提示404错误，但依然不能正常访问到页面。是不是转义过头了？于是我使用排除法逐一试验，果然，只需屏蔽掉问号就OK了。以下就是修改好的httpd.ini文件内容<br/><div class="code"><br/>&#91;ISAPI_Rewrite&#93;<br/><br/># 3600 = 1 hour<br/>CacheClockRate 3600<br/><br/>RepeatLimit 32<br/><br/># Protect httpd.ini and httpd.parse.errors files<br/># from accessing through HTTP<br/>#URL Rewrite for bo-blog 2.1 Edit by starlight36<br/>#http://www.hecks.tk<br/><br/>RewriteRule ^(.*)/post/(&#91;0-9&#93;+)/?(&#91;0-9&#93;+)?/?(&#91;0-9&#93;+)?/?$ $1/read.php&#92;?entryid=$2&amp;page=$3&amp;part=$4 &#91;I&#93;<br/>RewriteRule ^(.*)/page/(&#91;0-9&#93;+)/(&#91;0-9&#93;+)/?$ $1/index.php&#92;?mode=$2&amp;page=$3 &#91;I&#93;<br/>RewriteRule ^(.*)/starred/(&#91;0-9&#93;+)/?(&#91;0-9&#93;+)?/?$ $1/star.php&#92;?mode=$2&amp;page=$3 &#91;I&#93;<br/>RewriteRule ^(.*)/category/(&#91;^/&#93;+)/?(&#91;0-9&#93;+)?/?(&#91;0-9&#93;+)?/?$ $1/index.php&#92;?go=category_$2&amp;mode=$3&amp;page=$4 &#91;I&#93;<br/>RewriteRule ^(.*)/archiver/(&#91;0-9&#93;+)/(&#91;0-9&#93;+)/?(&#91;0-9&#93;+)?/?(&#91;0-9&#93;+)?/?$ $1/index.php&#92;?go=archive&amp;cm=$2&amp;cy=$3&amp;mode=$4&amp;page=$5 &#91;I&#93;<br/>RewriteRule ^(.*)/date/(&#91;0-9&#93;+)/(&#91;0-9&#93;+)/(&#91;0-9&#93;+)/?(&#91;0-9&#93;+)?/?(&#91;0-9&#93;+)?/?$ $1/index.php&#92;?go=showday_$2-$3-$4&amp;mode=$5&amp;page=$6 &#91;I&#93;<br/>RewriteRule ^(.*)/user/(&#91;0-9&#93;+)/?$ $1/view.php&#92;?go=user_$2 &#91;I&#93;<br/>RewriteRule ^(.*)/tags/(&#91;^/&#93;+)/?(&#91;0-9&#93;+)?/?(&#91;0-9&#93;+)?/?$ $1/tag.php&#92;?tag=$2&amp;mode=$3&amp;page=$4 &#91;I&#93;<br/>RewriteRule ^(.*)/component/id/(&#91;0-9&#93;+)/?$ $1/page.php&#92;?pageid=$2 &#91;I&#93;<br/>RewriteRule ^(.*)/component/(&#91;^/&#93;+)/?$ $1/page.php&#92;?pagealias=$2 &#91;I&#93;<br/><br/><br/>#Force redirection for old rules<br/>RewriteRule ^(.*)/post/(&#91;0-9&#93;+)&#92;.htm$ $1/post/$2/ &#91;I&#93;<br/>RewriteRule ^(.*)/post/(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;.htm$ $1/post/$2/$3/ &#91;I&#93;<br/>RewriteRule ^(.*)/post/(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;.htm$ $1/post/$2/$3/$4/ &#91;I&#93;<br/>RewriteRule ^(.*)/index&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;.htm$ $1/page/$2/$3/ &#91;I&#93;<br/>RewriteRule ^(.*)/star&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;.htm$ $1/starred/$2/$3/ &#91;I&#93;<br/>RewriteRule ^(.*)/category&#92;_(&#91;0-9&#93;+)&#92;.htm$ $1/category/$2/ &#91;I&#93;<br/>RewriteRule ^(.*)/category&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;.htm$ $1/category/$2/$3/$4/ &#91;I&#93;<br/>RewriteRule ^(.*)/archive&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;.htm$ $1/archiver/$2/$3/ &#91;I&#93;<br/>RewriteRule ^(.*)/archive&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;.htm$ $1/archiver/$2/$3/$4/$5/ &#91;I&#93;<br/>RewriteRule ^(.*)/showday&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;.htm$ $1/date/$2/$3/$4/ &#91;I&#93;<br/>RewriteRule ^(.*)/showday&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;_(&#91;0-9&#93;+)&#92;.htm$ $1/date/$2/$3/$4/$5/$6/ &#91;I&#93;<br/><br/>#Customized URL<br/>RewriteRule ^(.*)/(&#91;^&#92;/&#93;*)&#92;.html$ $1/$2/ &#91;I&#93;<br/>RewriteRule ^(.*)/(&#91;^/&#124;.&#93;+)/?(&#91;0-9&#93;+)?/?(&#91;0-9&#93;+)?/?$ $1/read.php&#92;?blogalias=$2&amp;page=$3&amp;part=$4 &#91;I&#93;<br/><br/></div><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; hoho~，批量替换以后，终于搞定了这个httpd.ini文件，放在上面试验，效果很好~~可是，依然存在一些问题。首先，访问http://www.hecks.tk这样的地址会出现找不到日志，其次，不少子目录不能访问了。经过分析发现最后一行的网址别名设计存在问题（也可能只在IIS上有这个问题），空别名也被重写了，所以没有指定首页文件的时候就出现了错误，其次，这样使用的设计会屏蔽掉所有2级子目录。因为我的空间上可能会在二级目录放置东西，所以只好对程序进行修改了。<br/><br/>打开inc/url.php文件，找到28行附近的<br/><textarea name="code" class="php" rows="15" cols="100">else&nbsp;&nbsp;$outurl=($alias) ? "&#123;$alias&#125;/" : "post/&#123;$id&#125;/";&nbsp;&nbsp; </textarea><br/>修改为:<br/><textarea name="code" class="php" rows="15" cols="100">else&nbsp;&nbsp;$outurl=($alias) ? "blog/&#123;$alias&#125;/" : "post/&#123;$id&#125;/";&nbsp;&nbsp;</textarea><br/>将上面的httpd.ini文件最后两行改为<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>RewriteRule ^(.*)/blog/([^&#92;/]*)&#92;.html$ $1/$2/ [I]<br/>RewriteRule ^(.*)/blog/([^/&#124;.]+)/?([0-9]+)?/?([0-9]+)?/?$ $1/read.php&#92;?blogalias=$2&page=$3&part=$4 [I]</div></div><br/>这样一番修改之后，就网址别名就全部归属到这个不存在的blog目录下面了~除了这个目录这个目录里面的文件会受到影响以外，其他的文件都会正常~~当然，你也可以根据需要改成自己想要的名字，呵呵。</span><br/><br/>Tags - <a href="https://www.heckjj.com/tags/bo-blog/" rel="tag">bo-blog</a> , <a href="https://www.heckjj.com/tags/iis/" rel="tag">iis</a> , <a href="https://www.heckjj.com/tags/%25E4%25BC%25AA%25E9%259D%2599%25E6%2580%2581/" rel="tag">伪静态</a> , <a href="https://www.heckjj.com/tags/%25E8%25A7%2584%25E5%2588%2599/" rel="tag">规则</a>
]]>
</description>
</item><item>
<link>https://www.heckjj.com/bo-blog-rewriteule-httpd/#blogcomment</link>
<title><![CDATA[[评论] boblog IIS Rewrite 伪静态规则文件 ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/bo-blog-rewriteule-httpd/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>