<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>笨活儿 &#187; url rewrite</title> <atom:link href="http://blog.benhuoer.com/tag/url-rewrite/feed" rel="self" type="application/rss+xml" /><link>http://blog.benhuoer.com</link> <description>请用力生活</description> <lastBuildDate>Mon, 02 Jan 2012 16:05:26 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /> <item><title>用ISAPI Rewiter代替虚拟主机，实现一个空间多个域名共用</title><link>http://blog.benhuoer.com/posts/isapi-rewiter-for-vhost.html</link> <comments>http://blog.benhuoer.com/posts/isapi-rewiter-for-vhost.html#comments</comments> <pubDate>Fri, 06 Mar 2009 09:30:54 +0000</pubDate> <dc:creator>慵云</dc:creator> <category><![CDATA[Web技术]]></category> <category><![CDATA[url rewrite]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[虚拟主机]]></category> <guid
isPermaLink="false">http://blog.benhuoer.com/?p=478</guid> <description><![CDATA[域名续费时被告知可以以半价买一个空间。于是就买一个来玩玩。一年130，400M，也算不错了哇？ 由于不能直接在DNS解析里实现隐藏转发，所以就打算采用url rewrite来实现多个域名共用一个空间。空间里面各个站点再放到相应的文件夹里，如此一来虚拟主机里又不会显得混乱，又能实现搜索引擎友好的链接。 折腾了两天，最终选定的URL重写配置文件(httpd.ini)如下。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; [code lang="shell"][ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 20 #拒绝访问httpd.ini和httpd.parse.errors RewriteRule /httpd(?:.ini&#124;.parse.errors) / [F,I,O] #拒绝访问特定后缀名的文件 RewriteRule .*.isrwhlp / [F,I,O] #小小地抵抗一下蠕虫攻击 RewriteRule .*(?:global\.asa&#124;default\.ida&#124;root\.exe&#124;\.\.).* . [F,I,O] #给末尾不带&#34;/&#34;的的地址添加上&#34;/&#34; #RewriteCond是Rewrite Conditions的意思，给下面的规则添加应用条件。(.*)代表任意匹配。 RewriteCond Host: (.*) RewriteRule ([^.?]+[^.?/]) http://$1$2/ [I,R] #方括号中的I和R分别代表“忽略(ignore)大小写”和“转接(redirect)[即显性跳转。地址栏看得到地址变化。]” RewriteCond Host: portfolio.benhuoer.com RewriteRule .* http://blog.benhuoer.com/portfolio [I,R,L] RewriteCond Host: benhuoer.com RewriteRule (.+)\.(jpg&#124;png&#124;jpeg&#124;bmp&#124;gif&#124;xml&#124;pdf) http://blog.benhuoer.com/blog$1\.$2 [...]<div
class="related-post"> <strong>你应该也会喜欢：</strong><ol><li><a
href="http://blog.benhuoer.com/posts/my-first-project.html" rel="bookmark">果冻恙 &mdash; 我的第一个作品</a></li></ol></div> ]]></description> <content:encoded><![CDATA[<p>域名续费时被告知可以以半价买一个空间。于是就买一个来玩玩。一年130，400M，也算不错了哇？</p><p>由于不能直接在DNS解析里实现隐藏转发，所以就打算采用url rewrite来实现多个域名共用一个空间。空间里面各个站点再放到相应的文件夹里，如此一来虚拟主机里又不会显得混乱，又能实现搜索引擎友好的链接。</p><p><span
id="more-478"></span></p><p>折腾了两天，最终选定的URL重写配置文件(httpd.ini)如下。</p><p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br
/> [code lang="shell"][ISAPI_Rewrite]<br
/> # 3600 = 1 hour<br
/> CacheClockRate 3600<br
/> RepeatLimit 20</p><p>#拒绝访问httpd.ini和httpd.parse.errors<br
/> RewriteRule /httpd(?:.ini|.parse.errors) / [F,I,O]</p><p>#拒绝访问特定后缀名的文件<br
/> RewriteRule .*.isrwhlp / [F,I,O]</p><p>#小小地抵抗一下蠕虫攻击<br
/> RewriteRule .*(?:global\.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]</p><p>#给末尾不带&quot;/&quot;的的地址添加上&quot;/&quot;<br
/> #RewriteCond是Rewrite Conditions的意思，给下面的规则添加应用条件。(.*)代表任意匹配。<br
/> RewriteCond Host: (.*)<br
/> RewriteRule ([^.?]+[^.?/]) http://$1$2/ [I,R]<br
/> #方括号中的I和R分别代表“忽略(ignore)大小写”和“转接(redirect)[即显性跳转。地址栏看得到地址变化。]”</p><p>RewriteCond Host: portfolio.benhuoer.com<br
/> RewriteRule .* http://blog.benhuoer.com/portfolio [I,R,L]</p><p>RewriteCond Host: benhuoer.com<br
/> RewriteRule (.+)\.(jpg|png|jpeg|bmp|gif|xml|pdf) http://blog.benhuoer.com/blog$1\.$2 [I,R,L]</p><p>RewriteCond Host: blog.benhuoer.com<br
/> RewriteRule /wp(.*) /blog/wp$1<br
/> RewriteRule /sitemap\.xml /blog/sitemap\.xml</p><p>#标签tag<br
/> RewriteRule /post/tag/(.*)/?$ /index\.php\?tag=$1 [L]<br
/> RewriteRule /tag/(.*)/page/([0-9]+)/?$ /index\.php\?tag_name=$1&amp;amp;paged=$2 [L]<br
/> RewriteRule /tag/(.*)/?$ /index\.php\?tag=$1 [L]</p><p>#页面page (在后台与“文章”相对应那个东西)<br
/> RewriteRule /(contact|about|feedback|copyright|favor|archives|tags|sitemap) /index\.php\?pagename=$1 [L]</p><p>#分类目录<br
/> RewriteRule /category/(.*)/page/([0-9]+)/?$  /index\.php\?category_name=$1&amp;amp;paged=$2 [L]<br
/> RewriteRule /category/?(.*)/?$ /index\.php\?category_name=$1 [L]</p><p>#作者<br
/> RewriteRule /author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed\.php\?author_name=$1&amp;amp;feed=$2 [L]<br
/> RewriteRule /author/?(.*) /index\.php\?author_name=$1 [L]</p><p>#rss<br
/> RewriteRule /rss.xml /wp-feed\.php/\?feed=rss2 [L]<br
/> RewriteRule /feed/?$ /wp-feed\.php/\?feed=rss2 [L]<br
/> RewriteRule /comments/feed/?$ /wp-feed\.php/\?feed=comments-rss2 [L]</p><p># RewriteRule /([0-9]+)/?([0-9]+)?/?$ /index\.php\?p=$1&amp;amp;page=$2<br
/> # RewriteRule /post/([0-9]+)/?([0-9]+)?/?$ /index\.php\?p=$1&amp;amp;page=$2 [L]</p><p>#分页查看文章<br
/> RewriteRule /post/([0-9]+).html /index\.php\?p=$1 [L]<br
/> RewriteRule /page/(.*)/?s=(.*) /index\.php\?s=$2&amp;amp;paged=$1 [L]<br
/> RewriteRule /page/(.*) /index\.php\?paged=$1 [L]</p><p>#按日期存档<br
/> RewriteRule /([0-9]{4})/([0-9]{1,2})/page/?([0-9]+)?/?$ /index\.php\?m=$1$2&amp;amp;paged=$3 [L]<br
/> RewriteRule /([0-9]{4})/([0-9]{1,2})/?$ /index\.php\?m=$1$2&amp;amp;paged=$3 [L]</p><p>#页面们<br
/> RewriteRule /(about|browse|portfolio|)/?([0-9]+)?/?$ /index\.php\?pagename=$1&amp;amp;paged=$2 [L]</p><p># #以前我使用过/%year%/%monthnum%/%postname%.html作为文章链接<br
/> # #网站更新后采用了/%year%/%monthnum%/%postname%/ 的形式<br
/> # #为了链接形式的统一，同时使老链接保持可用<br
/> # #下面的代码将 /%year%/%monthnum%/%postname%.html 重定向到 /%year%/%monthnum%/%postname%/<br
/> # #注意：重定向到的网址“/$1/$2/$3/$4”没有添加blog前缀，因为重定向之后会从头开始再来验证Rewrite规则。<br
/> # #于是域名里面的blog(blog.benhuoer.com)又会添加到路径(blog.benhuoer.com/blog)中。<br
/> RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+).html/?$ /$1/$2/$3 [I,R]<br
/> RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+)/?([0-9]+).html/?$ /$1/$2/$3/$4 [I,R]</p><p># # 重写 /%year%/%monthnum%/%postname%/ 形式的链接<br
/> RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+)/\?(*.)$ /index\.php\?m=$1$2&amp;amp;name=$3&amp;amp;$4 [L]<br
/> RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+)/?([0-9]+)?/?$ /index\.php\?m=$1$2&amp;amp;name=$3&amp;amp;paged=$4 [L]<br
/> RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ /index\.php\?m=$1$2&amp;amp;name=$3&amp;amp;feed=$4 [L]<br
/> RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+)/trackback/?$ /wp-trackback\.php\?m=$1$2&amp;amp;name=$3&amp;amp;tb=1[/code]</p><p>今天下午没去上课，就是因为发现貌似还有更简单便宜的方法：<a
href="http://wordpress.org/support/topic/36214">http://wordpress.org/support/topic/36214 </a></p><p>结果一直在企图实现按照这种操作实现干净链接，结果一直没搞出来。整得我逃了四节课呀！</p><p>他的原理是利用404页面传递参数给index.php。我这虚拟主机是WIN的，貌似“index.php/参数/参数”这样的地址无法处理。又不能直接用rewriter隐藏转发到这个地址，必须在404页面里通过php函数和服务器变量来传递参数。他这个方法，如果我的WordPress直接放在虚拟主机的根目录下的话，应该能用。可我现在是放在子目录下，通过url rewrite实现了子域名而非子目录链接，用这种方法的时候就会有地址错误的问题。转发过来转发过去，传递过来传递过去，很是混乱。我自己是看不清楚服务器里面到底发生了什么，如果有人能搞清楚这里面的玄妙，可一定要留言告诉我呀！</p><p><strong>UPDATE：这种方法还是没有完全解决问题，RSS种子等都有问题。其实可以在url rewriter里面更改规则的，但是还是哪句话，跳过去调过来，头都晕了，为了RSS能用，我又换回<a
href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory" target="_blank">把WP的index.php放到根目录下</a>的方式了。</strong></p><div
class="related-post"> <strong>你应该也会喜欢：</strong><ol><li><a
href="http://blog.benhuoer.com/posts/my-first-project.html" rel="bookmark">果冻恙 &mdash; 我的第一个作品</a></li></ol></div><div
style="border-top:dashed 1px #ccc;  border-bottom:dashed 1px #ccc;padding:0.3em 0;">分类于：<a
href="http://blog.benhuoer.com/category/web-technology" title="查看 Web技术 中的全部文章" rel="category tag">Web技术</a>        标签: <a
href="http://blog.benhuoer.com/tag/url-rewrite" rel="tag">url rewrite</a>, <a
href="http://blog.benhuoer.com/tag/wordpress" rel="tag">WordPress</a>, <a
href="http://blog.benhuoer.com/tag/%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba" rel="tag">虚拟主机</a></div><p><small>©2009 <a
href="http://blog.benhuoer.com" target="_blank">笨活儿</a> | <a
href="http://blog.benhuoer.com/posts/isapi-rewiter-for-vhost.html" target="_blank">永久链接</a> | <a
href="http://blog.benhuoer.com/posts/isapi-rewiter-for-vhost.html#comments" target="_blank">等你来抢沙发呢</a> | <a
href="http://9.douban.com/recommend/?url=http://blog.benhuoer.com/posts/isapi-rewiter-for-vhost.html&title=用ISAPI Rewiter代替虚拟主机，实现一个空间多个域名共用&v=1&n=1" target="_blank">推荐到豆瓣</a> <br/> </small></p>]]></content:encoded> <wfw:commentRss>http://blog.benhuoer.com/posts/isapi-rewiter-for-vhost.html/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
