<?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; .htaccess</title>
	<atom:link href="http://cnzhx.net/blog/tag/htaccess/feed/" rel="self" type="application/rss+xml" />
	<link>http://cnzhx.net</link>
	<description>Just notes about something I&#039;m interested in</description>
	<lastBuildDate>Thu, 09 Sep 2010 12:18:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Mod RewriteRule 基本表达规则</title>
		<link>http://cnzhx.net/blog/articles/very-basic-regexp-of-mod-rewrite-rule/</link>
		<comments>http://cnzhx.net/blog/articles/very-basic-regexp-of-mod-rewrite-rule/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 12:10:28 +0000</pubDate>
		<dc:creator>lonelicloud</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[计算机]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[正则表达式]]></category>
		<guid isPermaLink="false">http://cnzhx.net/?p=1978</guid>
		<description><![CDATA[在Apache服务器上，我们经常因为URL链接地址的SEO（搜索引擎优化）需要而改写URL形式。如WordPress里的永久链接（Permalinks）的实现就需要这样。利用的就是其Mod Rewrite模块的链接重写功能。链接重写采用的是正则表达式（Regular Expression）来定义匹配规则。下面是经常用到的一些语法规则的含义，我感觉就像是代数表达式。]]></description>
			<content:encoded><![CDATA[<p>在Apache服务器上，我们经常因为URL链接地址的SEO（搜索引擎优化）需要而改写URL形式。如WordPress里的永久链接（Permalinks）的实现就需要这样。利用的就是其Mod Rewrite模块的链接重写功能。链接重写采用的是正则表达式（Regular Expression）来定义匹配规则。下面是经常用到的一些语法规则的含义，我感觉就像是代数表达式。</p>
<p><span id="more-1978"></span>转义：</p>
<blockquote><p>\字符 转换特殊字符，用于一些特定的特殊字符的表达，如 [ ] . ( ) \ 等。\ 后的该字符将显示为字符本身，而不是用于句法的参数。</p></blockquote>
<p style="padding-left: 30px;">例如，\. 将表示本义的小圆点 . ，而不是后面将要说到的替换内容。</p>
<p>文本：</p>
<blockquote><p>.    替代任何单个字符（如果只有它自己，则表示整个URI）</p>
<p>[字符]    一类字符：该字符类中的某一个字符</p>
<p>[^字符]    一类字符：不包括于该字符类中的字符</p>
<p>文本1|文本2    两者选一：文本1 或者 文本2</p></blockquote>
<p style="padding-left: 30px;">例如，[^/] 匹配除了 / 字符之外的其它任何字符</p>
<p style="padding-left: 30px;">(foo|bar)\.html 匹配 foo.html 和 bar.html 两个表达</p>
<p>数量：</p>
<blockquote><p>?    前面紧邻字符的 0 或 1 个</p>
<p>*    前面紧邻字符的 0 或 N 个</p>
<p>+    前面紧邻字符的 1 或 N 个</p></blockquote>
<p style="padding-left: 30px;">例如，</p>
<p style="padding-left: 30px;">(.+)\.html? 可以匹配 foo.htm 和 foo.html 两个表达（ ? 前面的一个字符 l 出现1次或不出现（0次））</p>
<p style="padding-left: 30px;">(foo)?bar\.html 匹配 bar.html 和 foobar.html 两个表达（ ? 前面的一个组合（由（）控制）出现1次或不出现（0次））</p>
<p>组合：</p>
<blockquote><p>(文本)  文本的组合</p></blockquote>
<p style="padding-left: 30px;">用于设定一个可变范围的边界或者在作为RewriteRule中$n的目标时表达一个后向引用。</p>
<p style="padding-left: 30px;">例如  ^(.*)\.html foo.php?bar=$1 则$1由前面()内的内容产生。</p>
<p>锚：</p>
<blockquote><p>^    一行的开始</p>
<p>$    一行的结束</p></blockquote>
<p style="padding-left: 30px;">锚明确的定义了与规则相比较的URI字符串的开始（^之后的第一个字符）和结束（$之前的最后一个字符）。</p>
<p style="padding-left: 30px;">例如，</p>
<p style="padding-left: 30px;">^foo(.*) 可以匹配 foo 和 foobar 但是与 eggfoo 不匹配</p>
<p style="padding-left: 30px;">(.*)l$ 可以匹配 fool 和 cool，但却不匹配 foo</p>
<p>From <a href="http://corz.org/serv/tricks/htaccess2.php">http://corz.org/serv/tricks/htaccess2.php</a></p>
<p>Reference <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html</a></p>
<p>不是计算机专业的人还真不容易搞明白这些东西，我捉摸了好几天才把那个用于<a href="http://cnzhx.net/blog/articles/regexp-change-wordpress-uri/">批量匹配搜索mysql数据库文件中大量含日期的链接并替换为另一常量字符串</a>的表达式写出来。<br />
<h3 class='related_post_title'>相关文章：</h3>
<ul class='related_post'>
<li><a href='http://cnzhx.net/blog/articles/regexp-change-wordpress-uri/' title='使用正则表达式批量修改WordPress文章内部链接（URI）'>使用正则表达式批量修改WordPress文章内部链接（URI）</a></li>
<li><a href='http://cnzhx.net/blog/articles/update-to-wordpress-3-0-multisite-problem/' title='升级到WordPress 3.0多站点模式问题探索'>升级到WordPress 3.0多站点模式问题探索</a></li>
<li><a href='http://cnzhx.net/blog/articles/notice-change-blog-link/' title='广而告之：变更博客链接'>广而告之：变更博客链接</a></li>
<li><a href='http://cnzhx.net/blog/articles/use-htaccess-301-redirection-to-make-unique-entry-url-of-website-for-sef/' title='使用.htaccess的301跳转确定唯一网站入口地址'>使用.htaccess的301跳转确定唯一网站入口地址</a></li>
<li><a href='http://cnzhx.net/blog/articles/live-messenger-can-not-run/' title='Windows Live Messenger无法打开故障一例及解决方法'>Windows Live Messenger无法打开故障一例及解决方法</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://cnzhx.net/blog/articles/very-basic-regexp-of-mod-rewrite-rule/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>广而告之：变更博客链接</title>
		<link>http://cnzhx.net/blog/articles/notice-change-blog-link/</link>
		<comments>http://cnzhx.net/blog/articles/notice-change-blog-link/#comments</comments>
		<pubDate>Wed, 12 May 2010 01:40:29 +0000</pubDate>
		<dc:creator>lonelicloud</dc:creator>
				<category><![CDATA[筑巢日记]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[301]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://cnzhx.net/blog/?p=1739</guid>
		<description><![CDATA[为了提高链接的可读性，遵从网络惯例，昨天夜间将博客 http://cnzhx.net/wp/ 的链接更改为 http://cnzhx.net/blog/。如果您曾经转载或者引用本博客的内容，请将链接做相应更改！给您造成的不便，我们深表歉意！谢谢！]]></description>
			<content:encoded><![CDATA[<p>为了提高链接的可读性，遵从网络惯例，昨天夜间将博客 http://cnzhx.net/wp/ 的链接更改为 http://cnzhx.net/blog/。如果您曾经转载或者引用本博客的内容，请将链接做相应更改！给您造成的不便，我们深表歉意！谢谢！</p>
<p><span id="more-1739"></span>当然，已经在服务器上的 .htaccess里加入了301跳转：</p>
<blockquote><p>Redirect 301 /wp /blog</p></blockquote>
<p>但是我的测试表明，<span style="color: #990000;"><strong>多一次301跳转，访问时间就要增加近1.5s</strong></span>（针对我使用的服务器而言）。所以，虽然使用原来的链接也能访问到正确的内容，为了节省时间，还是请手动将收藏夹中的地址改了，或者打开后重新收藏。谢谢！</p>
<p>之前测试过使用301跳转来无缝变更WordPress安装文件夹，可是因为疏忽，没有将 .htaccess文件的访问权限设定正确（至少要是644），一直没能成功。今天终于如愿以偿了。<br />
<h3 class='related_post_title'>相关文章：</h3>
<ul class='related_post'>
<li><a href='http://cnzhx.net/blog/articles/safely-change-permalinks-of-wordpress/' title='安全修改WordPress网站永久链接地址形式'>安全修改WordPress网站永久链接地址形式</a></li>
<li><a href='http://cnzhx.net/blog/articles/update-to-wordpress-3-0-multisite-problem/' title='升级到WordPress 3.0多站点模式问题探索'>升级到WordPress 3.0多站点模式问题探索</a></li>
<li><a href='http://cnzhx.net/blog/articles/use-htaccess-301-redirection-to-make-unique-entry-url-of-website-for-sef/' title='使用.htaccess的301跳转确定唯一网站入口地址'>使用.htaccess的301跳转确定唯一网站入口地址</a></li>
<li><a href='http://cnzhx.net/blog/articles/wordpress-cache-plugins-contrast/' title='WordPress缓存插件性能对比'>WordPress缓存插件性能对比</a></li>
<li><a href='http://cnzhx.net/blog/articles/preload-the-cache-in-wp-super-cache/' title='预加载（Preload）WP Super Cache缓存'>预加载（Preload）WP Super Cache缓存</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://cnzhx.net/blog/articles/notice-change-blog-link/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>使用.htaccess的301跳转确定唯一网站入口地址</title>
		<link>http://cnzhx.net/blog/articles/use-htaccess-301-redirection-to-make-unique-entry-url-of-website-for-sef/</link>
		<comments>http://cnzhx.net/blog/articles/use-htaccess-301-redirection-to-make-unique-entry-url-of-website-for-sef/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 13:43:35 +0000</pubDate>
		<dc:creator>lonelicloud</dc:creator>
				<category><![CDATA[筑巢日记]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[301]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[重定向]]></category>
		<guid isPermaLink="false">http://cnzhx.net/blog/?p=1028</guid>
		<description><![CDATA[前几天读到一篇文章说网站应该只有唯一的入口地址，这样对搜索引擎比较友好（SEF）。于是遍寻.htaccess的写法。可惜网上很多文章都没有多少实际意义，基本都是一个内容变变脸又拿出来，有的甚至连脸都不变。不过还是找到一点儿线索，至少让我的这个.htaccess文件满足了我的要求。]]></description>
			<content:encoded><![CDATA[<p>前几天读到一篇文章说网站应该只有唯一的入口地址，这样对搜索引擎比较友好（SEF）。于是遍寻.htaccess的写法。可惜网上很多文章都没有多少实际意义，基本都是一个内容变变脸又拿出来，有的甚至连脸都不变。不过还是找到一点儿线索，至少让我的这个.htaccess文件满足了我的要求。</p>
<p><span id="more-1028"></span>内容如下，加入了一些注释：</p>
<blockquote><p><code><span style="color: #888888;">#BEGIN ZZ<br />
#打开重写引擎</span><br />
RewriteEngine On<br />
<span style="color: #888888;">#设定重写url的起始位置为 /</span><br />
RewriteBase /<br />
<span style="color: #888888;">#设定重写条件为：当请求地址不等于cnzhx.net时，如我的另一个域名cnzhx.co.cc</span><br />
RewriteCond %{HTTP_HOST} !^cnzhx.net$ [NC]<br />
<span style="color: #888888;">#重写规则：永久重定向到http://cnzhx.net</span><br />
RewriteRule ^(.*)$ http://cnzhx.net/$1 [L,R=301]<br />
<span style="color: #888888;">#重写条件：如果网站主入口后面跟着index.html（可以根据情况将下两行的html改为php）</span><br />
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/<br />
<span style="color: #888888;">#重写规则：永久重定向到不带index.html的地址http://cnzhx.net/</span><br />
RewriteRule ^index\.html$ http://cnzhx.net/ [R=301,L]<br />
<span style="color: #888888;">#END ZZ</span></code></p></blockquote>
<p>可惜的是，还没有搞懂不在网站根目录的时候，比如 /bbs 下的时候怎么去掉网址上的index，如http://cnzhx.net/bbs/index.php 重定向为http://cnzhx.net/bbs。</p>
<p>也许正是因为这个，才把我那个在国内不能访问的停放在xtreemhost上的域名唤醒了，结果导致1天后我的网站地址就被ban掉了。不过，也许只是时间上的巧合？<br />
<h3 class='related_post_title'>相关文章：</h3>
<ul class='related_post'>
<li><a href='http://cnzhx.net/blog/articles/notice-change-blog-link/' title='广而告之：变更博客链接'>广而告之：变更博客链接</a></li>
<li><a href='http://cnzhx.net/blog/articles/safely-change-permalinks-of-wordpress/' title='安全修改WordPress网站永久链接地址形式'>安全修改WordPress网站永久链接地址形式</a></li>
<li><a href='http://cnzhx.net/blog/articles/update-to-wordpress-3-0-multisite-problem/' title='升级到WordPress 3.0多站点模式问题探索'>升级到WordPress 3.0多站点模式问题探索</a></li>
<li><a href='http://cnzhx.net/blog/articles/wordpress-cache-plugins-contrast/' title='WordPress缓存插件性能对比'>WordPress缓存插件性能对比</a></li>
<li><a href='http://cnzhx.net/blog/articles/web-load-time-affect-google-rank/' title='[转]网页加载速度影响Google搜索结果排名'>[转]网页加载速度影响Google搜索结果排名</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://cnzhx.net/blog/articles/use-htaccess-301-redirection-to-make-unique-entry-url-of-website-for-sef/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
