回主页

笨活儿关注Web前端和网页设计,同时兼顾用户体验,致力于将国外的优秀教程汉化,并不定期推荐免费优秀影视娱乐资源。

订阅本博客。


  • About/关于
  • Browse/浏览
  • Portfolio/作品集
  • Search/搜索

TOPICS/主题:英国达人中文字幕 网页设计 免费资源 Web前端 感受年轻 边翻译边学习More...


  • « 构建完美作品集网站十步走[SM]
  • 那个21se上唱Rhythm of The Rain的男生 »
发表时间:三月 6 ↓ 有话想说

用ISAPI Rewiter代替虚拟主机,实现一个空间多个域名共用

由 慵云 发表于 Web技术 分类下  发表时间:星期五, 三月 6, 2009 17:30

域名续费时被告知可以以半价买一个空间。于是就买一个来玩玩。一年130,400M,也算不错了哇?

由于不能直接在DNS解析里实现隐藏转发,所以就打算采用url rewrite来实现多个域名共用一个空间。空间里面各个站点再放到相应的文件夹里,如此一来虚拟主机里又不会显得混乱,又能实现搜索引擎友好的链接。

折腾了两天,最终选定的URL重写配置文件(httpd.ini)如下。

—————————————————–
[code lang="shell"][ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 20

#拒绝访问httpd.ini和httpd.parse.errors
RewriteRule /httpd(?:.ini|.parse.errors) / [F,I,O]

#拒绝访问特定后缀名的文件
RewriteRule .*.isrwhlp / [F,I,O]

#小小地抵抗一下蠕虫攻击
RewriteRule .*(?:global\.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

#给末尾不带"/"的的地址添加上"/"
#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|png|jpeg|bmp|gif|xml|pdf) http://blog.benhuoer.com/blog$1\.$2 [I,R,L]

RewriteCond Host: blog.benhuoer.com
RewriteRule /wp(.*) /blog/wp$1
RewriteRule /sitemap\.xml /blog/sitemap\.xml

#标签tag
RewriteRule /post/tag/(.*)/?$ /index\.php\?tag=$1 [L]
RewriteRule /tag/(.*)/page/([0-9]+)/?$ /index\.php\?tag_name=$1&paged=$2 [L]
RewriteRule /tag/(.*)/?$ /index\.php\?tag=$1 [L]

#页面page (在后台与“文章”相对应那个东西)
RewriteRule /(contact|about|feedback|copyright|favor|archives|tags|sitemap) /index\.php\?pagename=$1 [L]

#分类目录
RewriteRule /category/(.*)/page/([0-9]+)/?$ /index\.php\?category_name=$1&paged=$2 [L]
RewriteRule /category/?(.*)/?$ /index\.php\?category_name=$1 [L]

#作者
RewriteRule /author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed\.php\?author_name=$1&feed=$2 [L]
RewriteRule /author/?(.*) /index\.php\?author_name=$1 [L]

#rss
RewriteRule /rss.xml /wp-feed\.php/\?feed=rss2 [L]
RewriteRule /feed/?$ /wp-feed\.php/\?feed=rss2 [L]
RewriteRule /comments/feed/?$ /wp-feed\.php/\?feed=comments-rss2 [L]

# RewriteRule /([0-9]+)/?([0-9]+)?/?$ /index\.php\?p=$1&page=$2
# RewriteRule /post/([0-9]+)/?([0-9]+)?/?$ /index\.php\?p=$1&page=$2 [L]

#分页查看文章
RewriteRule /post/([0-9]+).html /index\.php\?p=$1 [L]
RewriteRule /page/(.*)/?s=(.*) /index\.php\?s=$2&paged=$1 [L]
RewriteRule /page/(.*) /index\.php\?paged=$1 [L]

#按日期存档
RewriteRule /([0-9]{4})/([0-9]{1,2})/page/?([0-9]+)?/?$ /index\.php\?m=$1$2&paged=$3 [L]
RewriteRule /([0-9]{4})/([0-9]{1,2})/?$ /index\.php\?m=$1$2&paged=$3 [L]

#页面们
RewriteRule /(about|browse|portfolio|)/?([0-9]+)?/?$ /index\.php\?pagename=$1&paged=$2 [L]

# #以前我使用过/%year%/%monthnum%/%postname%.html作为文章链接
# #网站更新后采用了/%year%/%monthnum%/%postname%/ 的形式
# #为了链接形式的统一,同时使老链接保持可用
# #下面的代码将 /%year%/%monthnum%/%postname%.html 重定向到 /%year%/%monthnum%/%postname%/
# #注意:重定向到的网址“/$1/$2/$3/$4”没有添加blog前缀,因为重定向之后会从头开始再来验证Rewrite规则。
# #于是域名里面的blog(blog.benhuoer.com)又会添加到路径(blog.benhuoer.com/blog)中。
RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+).html/?$ /$1/$2/$3 [I,R]
RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+)/?([0-9]+).html/?$ /$1/$2/$3/$4 [I,R]

# # 重写 /%year%/%monthnum%/%postname%/ 形式的链接
RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+)/\?(*.)$ /index\.php\?m=$1$2&name=$3&$4 [L]
RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+)/?([0-9]+)?/?$ /index\.php\?m=$1$2&name=$3&paged=$4 [L]
RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ /index\.php\?m=$1$2&name=$3&feed=$4 [L]
RewriteRule /([0-9]{4})/([0-9]{1,2})/([^/]+)/trackback/?$ /wp-trackback\.php\?m=$1$2&name=$3&tb=1[/code]

今天下午没去上课,就是因为发现貌似还有更简单便宜的方法:http://wordpress.org/support/topic/36214

结果一直在企图实现按照这种操作实现干净链接,结果一直没搞出来。整得我逃了四节课呀!

他的原理是利用404页面传递参数给index.php。我这虚拟主机是WIN的,貌似“index.php/参数/参数”这样的地址无法处理。又不能直接用rewriter隐藏转发到这个地址,必须在404页面里通过php函数和服务器变量来传递参数。他这个方法,如果我的WordPress直接放在虚拟主机的根目录下的话,应该能用。可我现在是放在子目录下,通过url rewrite实现了子域名而非子目录链接,用这种方法的时候就会有地址错误的问题。转发过来转发过去,传递过来传递过去,很是混乱。我自己是看不清楚服务器里面到底发生了什么,如果有人能搞清楚这里面的玄妙,可一定要留言告诉我呀!

UPDATE:这种方法还是没有完全解决问题,RSS种子等都有问题。其实可以在url rewriter里面更改规则的,但是还是哪句话,跳过去调过来,头都晕了,为了RSS能用,我又换回把WP的index.php放到根目录下的方式了。

你应该也会喜欢:
  1. 果冻恙 — 我的第一个作品

标签:url rewrite • WordPress • 虚拟主机

© 笨活儿   允许转载,但请以链接形式保留出处。也欢迎您使用RSS订阅本博客。

  • « 构建完美作品集网站十步走[SM]
  • 那个21se上唱Rhythm of The Rain的男生 »

N个人不厚道地悄悄飘走...

怎么都没有人留言?这篇文章很让你们无语么?...

多说话有益身体健康

点击这里取消回复。

请勿发表“顶”、“好”、“很有用”之类对他人没有帮助的话。欢迎针对文章内容发表您自己的真知灼见。

点击人名后面的 ←@ 可以回复TA。如果已经超过回复层级,您可以在上一级回复,并记得加上“@称呼”以注明您回复的是谁。

您可以订阅本文的RSS供稿,及时了解大家的讨论进度。


唠唠叨叨:
  • 08月19日
     表面的和平 
  • 08月17日
     你就是一个屎一样的存在 
  • 08月15日
     我对你们这些被宠坏了的小孩,真是一点语言都没有 
  • 08月13日
     如果你要问我对杭州什么感觉,我会说—— Hot, so hot! 
  • 08月11日
     有爱就会有希望哦! 

由 嘀咕 提供服务


  • 日历 Calendar

    2010 八月
    一 二 三 四 五 六 日
    « 七    
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  
  • 订阅 Subscribe

    • google reader
    • 抓虾
    • 鲜果
    • 有道
    • QQ邮箱
    • 哪吒
    • 九点
    • 更多方式...
  • 广告 Ads

  • 分类文章 Categories

    • Web技术 (30)
      • 交互和UE (2)
      • 前端开发 (14)
      • 网页设计 (9)
    • 人微言轻 (2)
    • 外语笔记 (9)
      • 英语精译精析 (5)
    • 好康推荐 (15)
    • 娱乐至死 (52)
    • 生活琐碎 (38)
    • 设计丛谈 (5)
  • 有情博客 Blogroll

    • 个篱: 音乐媒体观察
    • 偶为“英音”狂
    • 奇技淫巧
    • 小苑
    • 岁月如歌
    • 明城
    • 暂不留名
  • 博客群落 MyBlogs

    • 一同堕落
    • 千吨泥 – 前端技术
    • 千吨瞎想
    • 超哥爱你
  • 最新评论 LatesCmt

    • glee 在 欢乐合唱团 Glee 第一季歌舞片段 高清720P 全下载 上的评论
    • 慵云 在 舞林争霸第七季海选音乐合辑 SYTYCD Season 7 Music 上的评论
    • i love so u think u can dance 在 舞林争霸第七季海选音乐合辑 SYTYCD Season 7 Music 上的评论
    • wpillow87 在 [歌词翻译] If Everyone Cared – Nickelback 上的评论
    • 慵云 在 自由的百科全书+PDF+有声=? 上的评论

校内 | 豆瓣 | Last.Fm | Facebook | Google Reader | 百度 | 维基百科

© 笨活儿 2009

本站所有内容均可自由转载,但请遵循CC协议规定

Powered By WordPress, Original Theme by BenHuoer