<?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>Ricky Kwan</title>
	<atom:link href="http://rickykwan.iworkshop.com.hk/feed" rel="self" type="application/rss+xml" />
	<link>http://rickykwan.iworkshop.com.hk</link>
	<description>生活就像一個圈，來來回回...</description>
	<lastBuildDate>Thu, 22 Apr 2010 03:36:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>RewriteRule選項</title>
		<link>http://rickykwan.iworkshop.com.hk/2010/04/676.html</link>
		<comments>http://rickykwan.iworkshop.com.hk/2010/04/676.html#comments</comments>
		<pubDate>Thu, 22 Apr 2010 03:36:22 +0000</pubDate>
		<dc:creator>Ricky Kwan (RickyKwan)</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Program]]></category>
		<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://rickykwan.iworkshop.com.hk/?p=676</guid>
		<description><![CDATA[“redirect&#124;R[=code]” 強制重定向。經常引用到觸發可見的定向。默認情況下它是一個HTTP 302的臨時重定向，但是你可以注明具體的HTTP 代碼，比如你可以用[R=301]來表明這是一個永久重定向，這對搜索引擎抓取你重定向后的網頁相當有用。 “proxy&#124;P” 強制為代理 “forbidden&#124;F” 403 禁止。告訴Apache響應請求時不提供頁面。其原理就是Apache會發出一個403 HTTP相應，可以保護網站不被未經授權的或者其他盜鏈訪問。 “nocase&#124;NC” 忽略正則表達式中的大小寫。它經常被用到{HTTP_HOST}服務器參數上，因為域名里面是不會區分大小寫的。 “next&#124;N” 回到第一條規則。可以讓你的重寫條件循環匹配，當你不知道{REQUEST_URI}有多少字符進行匹配的時候很有用。 “last&#124;L” 最后一個規則。告訴Apache服務器一系列的條件或者是規則將在它出現后結束，換句話說就是[L]不出現，mod_rewrite將會一直執行。 “noescape&#124;NE” 在輸出中不對URI作轉義。此標記阻止mod_rewrite對重寫結果應用常規的URI轉義規則。 一般情況下，特殊字符(如‘%’, ‘$’, ‘;’等)會被轉義為等值的十六進制編碼。 此標記可以阻止這樣的轉義，以允許百分號等符號出現在輸出中，如： RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] 可以使‘/foo/zed’轉向到一個安全的請求‘/bar?arg=P1=zed’. “skip&#124;S=N” 跳過下面的N條規則。]]></description>
			<content:encoded><![CDATA[<p>“redirect|R[=code]” 強制重定向。經常引用到觸發可見的定向。默認情況下它是一個HTTP 302的臨時重定向，但是你可以注明具體的HTTP 代碼，比如你可以用[R=301]來表明這是一個永久重定向，這對搜索引擎抓取你重定向后的網頁相當有用。</p>
<p>“proxy|P” 強制為代理<br />
“forbidden|F” 403 禁止。告訴Apache響應請求時不提供頁面。其原理就是Apache會發出一個403 HTTP相應，可以保護網站不被未經授權的或者其他盜鏈訪問。</p>
<p>“nocase|NC” 忽略正則表達式中的大小寫。它經常被用到{HTTP_HOST}服務器參數上，因為域名里面是不會區分大小寫的。</p>
<p>“next|N” 回到第一條規則。可以讓你的重寫條件循環匹配，當你不知道{REQUEST_URI}有多少字符進行匹配的時候很有用。</p>
<p>“last|L” 最后一個規則。告訴Apache服務器一系列的條件或者是規則將在它出現后結束，換句話說就是[L]不出現，mod_rewrite將會一直執行。</p>
<p>“noescape|NE” 在輸出中不對URI作轉義。此標記阻止mod_rewrite對重寫結果應用常規的URI轉義規則。 一般情況下，特殊字符(如‘%’, ‘$’, ‘;’等)會被轉義為等值的十六進制編碼。 此標記可以阻止這樣的轉義，以允許百分號等符號出現在輸出中，如：<br />
RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]<br />
可以使‘/foo/zed’轉向到一個安全的請求‘/bar?arg=P1=zed’.</p>
<p>“skip|S=N” 跳過下面的N條規則。</p>
]]></content:encoded>
			<wfw:commentRss>http://rickykwan.iworkshop.com.hk/2010/04/676.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mod Rewrite 推薦資源</title>
		<link>http://rickykwan.iworkshop.com.hk/2010/04/686.html</link>
		<comments>http://rickykwan.iworkshop.com.hk/2010/04/686.html#comments</comments>
		<pubDate>Sun, 18 Apr 2010 03:46:07 +0000</pubDate>
		<dc:creator>Ricky Kwan (RickyKwan)</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Program]]></category>
		<category><![CDATA[amp]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Regular Expression]]></category>

		<guid isPermaLink="false">http://rickykwan.iworkshop.com.hk/?p=686</guid>
		<description><![CDATA[正則表達式工具firefox擴展：Regular Expressions Tester 正則表Introduction to the Tutorial： http://gnosis.cx/publish/programming/regular_expressions.html Apache文檔之mod_rewrite介紹： http://www.uplinux.com/download/doc/apache/ApacheManual/mod/mod_rewrite.html Apache文檔之URL重寫指南： http://www.uplinux.com/download/doc/apache/ApacheManual/misc/rewriteguide.html Learn Apache mod_rewrite: 13 Real-world Examples，原文： http://www.sitepoint.com/article/apache-mod_rewrite-examples/ Learn Apache mod_rewrite: 13 Real-world Examples，譯文：http://www.tsingfeng.com/?p=357 A Beginner’s Guide to URL Rewriting： http://www.sitepoint.com/article/guide-url-rewriting/ Apache的Mod_rewrite 例子： http://dreamwaver.bokee.com/5692845.html]]></description>
			<content:encoded><![CDATA[<p>正則表達式工具firefox擴展：Regular Expressions Tester<br />
正則表Introduction to the Tutorial：</p>
<p><a href="http://gnosis.cx/publish/programming/regular_expressions.html">http://gnosis.cx/publish/programming/regular_expressions.html</a></p>
<p>Apache文檔之mod_rewrite介紹：</p>
<p><a href="http://www.uplinux.com/download/doc/apache/ApacheManual/mod/mod_rewrite.html">http://www.uplinux.com/download/doc/apache/ApacheManual/mod/mod_rewrite.html</a></p>
<p><span id="more-686"></span><br />
Apache文檔之URL重寫指南：</p>
<p><a href="http://www.uplinux.com/download/doc/apache/ApacheManual/misc/rewriteguide.html">http://www.uplinux.com/download/doc/apache/ApacheManual/misc/rewriteguide.html</a></p>
<p>Learn Apache mod_rewrite: 13 Real-world Examples，原文：</p>
<p><a href="http://www.sitepoint.com/article/apache-mod_rewrite-examples/">http://www.sitepoint.com/article/apache-mod_rewrite-examples/</a></p>
<p>Learn Apache mod_rewrite: 13 Real-world Examples，譯文：<a href="http://www.tsingfeng.com/?p=357">http://www.tsingfeng.com/?p=357</a><br />
A Beginner’s Guide to URL Rewriting：</p>
<p><a href="http://www.sitepoint.com/article/guide-url-rewriting/">http://www.sitepoint.com/article/guide-url-rewriting/</a></p>
<p>Apache的Mod_rewrite 例子：</p>
<p><a href="http://dreamwaver.bokee.com/5692845.html">http://dreamwaver.bokee.com/5692845.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rickykwan.iworkshop.com.hk/2010/04/686.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>URL重寫舉例</title>
		<link>http://rickykwan.iworkshop.com.hk/2010/04/684.html</link>
		<comments>http://rickykwan.iworkshop.com.hk/2010/04/684.html#comments</comments>
		<pubDate>Wed, 14 Apr 2010 03:44:27 +0000</pubDate>
		<dc:creator>Ricky Kwan (RickyKwan)</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Program]]></category>
		<category><![CDATA[amp]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://rickykwan.iworkshop.com.hk/?p=684</guid>
		<description><![CDATA[1. 給子域名加www標記 RewriteCond %{HTTP_HOST} ^([a-z.]+)?example\.com$ [NC] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule .? http://www.%1example.com%{REQUEST_URI} [R=301,L] 這個規則抓取二級域名的%1變量，如果不是以www開始，那么就加www，以前的域名以及{REQUEST_URI}會跟在其后。 2. 去掉域名中的www標記 RewriteCond %{HTTP_HOST} !^example\.com$ [NC] RewriteRule .? http://example.com%{REQUEST_URI} [R=301,L] 3. 去掉www標記，但是保存子域名 RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?example\.com)$ [NC] RewriteRule .? http://%1%{REQUEST_URI} [R=301,L] 這里，當匹配到1%變量以后，子域名才會在%2（內部原子）中抓取到，而我們需要的正是這個%1變量。 4. 防止圖片盜鏈 一些站長不擇手段的將你的圖片盜鏈在他們網站上，耗費你的帶寬。你可以加一下代碼阻止這種行為。 RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC] RewriteRule \.(gif&#124;jpg&#124;png)$ – [F] 如果{HTTP_REFERER}值不為空，或者不是來自你自己的域名，這個規則用[F]FLAG阻止以gif&#124;jpg&#124;png 結尾的URL 如果對這種盜鏈你是堅決鄙視的，你還可以改變圖片，讓訪問盜鏈網站的用戶知道該網站正在盜用你的圖片。 RewriteCond %{HTTP_REFERER} [...]]]></description>
			<content:encoded><![CDATA[<p>1. 給子域名加www標記</p>
<blockquote><p>RewriteCond %{HTTP_HOST} ^([a-z.]+)?example\.com$ [NC]<br />
RewriteCond %{HTTP_HOST} !^www\. [NC]<br />
RewriteRule .? <a href="http://www.%1example.com%">http://www.%1example.com%</a>{REQUEST_URI} [R=301,L]</p></blockquote>
<p>這個規則抓取二級域名的%1變量，如果不是以www開始，那么就加www，以前的域名以及{REQUEST_URI}會跟在其后。</p>
<p>2. 去掉域名中的www標記</p>
<blockquote><p>RewriteCond %{HTTP_HOST} !^example\.com$ [NC]<br />
RewriteRule .? <a href="http://example.com%">http://example.com%</a>{REQUEST_URI} [R=301,L]</p></blockquote>
<p><span id="more-684"></span></p>
<p>3. 去掉www標記，但是保存子域名</p>
<blockquote><p>RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?example\.com)$ [NC]<br />
RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]</p></blockquote>
<p>這里，當匹配到1%變量以后，子域名才會在%2（內部原子）中抓取到，而我們需要的正是這個%1變量。</p>
<p>4. 防止圖片盜鏈<br />
一些站長不擇手段的將你的圖片盜鏈在他們網站上，耗費你的帶寬。你可以加一下代碼阻止這種行為。</p>
<blockquote><p>RewriteCond %{HTTP_REFERER} !^$<br />
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC]<br />
RewriteRule \.(gif|jpg|png)$ – [F]</p></blockquote>
<p>如果{HTTP_REFERER}值不為空，或者不是來自你自己的域名，這個規則用[F]FLAG阻止以gif|jpg|png 結尾的URL<br />
如果對這種盜鏈你是堅決鄙視的，你還可以改變圖片，讓訪問盜鏈網站的用戶知道該網站正在盜用你的圖片。</p>
<blockquote><p>RewriteCond %{HTTP_REFERER} !^$<br />
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]<br />
RewriteRule \.(gif|jpg|png)$ <a href="http://www.example.com/hotlinked.gif">http://www.example.com/hotlinked.gif</a> [R=301,L]</p></blockquote>
<p>除了阻止圖片盜鏈鏈接，以上規則將其盜鏈的圖片全部替換成了你設置的圖片。<br />
你還可以阻止特定域名盜鏈你的圖片：</p>
<blockquote><p>RewriteCond %{HTTP_REFERER} !^http://(www\.)?leech_site\.com/ [NC]<br />
RewriteRule \.(gif|jpg|png)$ – [F,L]</p></blockquote>
<p>這個規則將阻止域名黑名單上所有的圖片鏈接請求。<br />
當然以上這些規則都是以{HTTP_REFERER}獲取域名為基礎的，如果你想改用成IP地址，用{REMOTE_ADDR}就可以了。</p>
<p>5. 如果文件不存在重定向到404頁面</p>
<blockquote><p>RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f<br />
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d<br />
RewriteRule .? /404.php [L]</p></blockquote>
<p>-f匹配的是存在的文件名，-d匹配的存在的路徑名</p>
<p>6. 創建無文件后綴名鏈接</p>
<blockquote><p>RewriteCond %{REQUEST_FILENAME}.php -f<br />
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.php [L]<br />
RewriteCond %{REQUEST_FILENAME}.html -f<br />
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.html [L]</p></blockquote>
<p>如果文件是以.php為后綴，這條規則將被執行。</p>
<p>7. 強制使用HTTPS</p>
<blockquote><p>RewriteCond %{HTTPS} !on<br />
#RewriteCond %{SERVER_PORT} !^443$<br />
RewriteCond %{HTTP_HOST} ^([a-z.]+)?example\.com$ [NC]<br />
RewriteRule ^(.*)$ <a href="https://%1example.com">https://%1example.com</a>$1 [R=301,L]</p></blockquote>
<p>判斷HTTPS服務可以判斷安全端口（一般是443），也可以通過HTTPS變量。將example.com域名下所有url都強制使用https服務。<br />
如果不判斷域名，可以這樣：</p>
<blockquote><p>RewriteCond %{HTTPS} !on<br />
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]</p></blockquote>
<p>這里的$1前面有斜杠/，其實是匹配模式去掉了斜杠的原因，和上面效果是一樣的。</p>
]]></content:encoded>
			<wfw:commentRss>http://rickykwan.iworkshop.com.hk/2010/04/684.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>服務器變量</title>
		<link>http://rickykwan.iworkshop.com.hk/2010/04/682.html</link>
		<comments>http://rickykwan.iworkshop.com.hk/2010/04/682.html#comments</comments>
		<pubDate>Sat, 10 Apr 2010 03:39:53 +0000</pubDate>
		<dc:creator>Ricky Kwan (RickyKwan)</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Program]]></category>

		<guid isPermaLink="false">http://rickykwan.iworkshop.com.hk/?p=682</guid>
		<description><![CDATA[HTTP變量 HTTP_USER_AGENT HTTP_REFERER HTTP_COOKIE HTTP_FORWARDED HTTP_HOST HTTP_PROXY_CONNECTION HTTP_ACCEPT 連結和請求的變量 REMOTE_ADDR REMOTE_HOST REMOTE_USER REMOTE_IDENT REQUEST_METHOD SCRIPT_FILENAME PATH_INFO QUERY_STRING AUTH_TYPE 服務器內部變量 DOCUMENT_ROOT SERVER_ADMIN SERVER_NAME SERVER_ADDR SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE 系統變量 TIME_YEAR TIME_MON TIME_DAY TIME_HOUR TIME_MIN TIME_SEC TIME_WDAY TIME mod_rewrite特殊值 API_VERSION THE_REQUEST REQUEST_URI REQUEST_FILENAME]]></description>
			<content:encoded><![CDATA[<h2>HTTP變量</h2>
<blockquote>
<ul>
<li>HTTP_USER_AGENT</li>
<li>HTTP_REFERER</li>
<li>HTTP_COOKIE</li>
<li>HTTP_FORWARDED</li>
<li>HTTP_HOST</li>
<li>HTTP_PROXY_CONNECTION</li>
<li>HTTP_ACCEPT</li>
</ul>
</blockquote>
<h2>連結和請求的變量</h2>
<blockquote>
<ul>
<li>REMOTE_ADDR</li>
<li>REMOTE_HOST</li>
<li>REMOTE_USER</li>
<li>REMOTE_IDENT</li>
<li>REQUEST_METHOD</li>
<li>SCRIPT_FILENAME</li>
<li>PATH_INFO</li>
<li>QUERY_STRING</li>
<li>AUTH_TYPE</li>
</ul>
</blockquote>
<h2>服務器內部變量</h2>
<blockquote>
<ul>
<li>DOCUMENT_ROOT</li>
<li>SERVER_ADMIN</li>
<li>SERVER_NAME</li>
<li>SERVER_ADDR</li>
<li>SERVER_PORT</li>
<li>SERVER_PROTOCOL</li>
<li>SERVER_SOFTWARE</li>
</ul>
</blockquote>
<h2>系統變量</h2>
<blockquote>
<ul>
<li>TIME_YEAR</li>
<li>TIME_MON</li>
<li>TIME_DAY</li>
<li>TIME_HOUR</li>
<li>TIME_MIN</li>
<li>TIME_SEC</li>
<li>TIME_WDAY</li>
<li>TIME</li>
</ul>
</blockquote>
<h2>mod_rewrite特殊值</h2>
<blockquote>
<ul>
<li>API_VERSION</li>
<li>THE_REQUEST</li>
<li>REQUEST_URI</li>
<li>REQUEST_FILENAME</li>
</ul>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://rickykwan.iworkshop.com.hk/2010/04/682.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RewriteCond選項</title>
		<link>http://rickykwan.iworkshop.com.hk/2010/04/680.html</link>
		<comments>http://rickykwan.iworkshop.com.hk/2010/04/680.html#comments</comments>
		<pubDate>Wed, 07 Apr 2010 03:39:16 +0000</pubDate>
		<dc:creator>Ricky Kwan (RickyKwan)</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Program]]></category>

		<guid isPermaLink="false">http://rickykwan.iworkshop.com.hk/?p=680</guid>
		<description><![CDATA[‘nocase&#124;NC’ (no case)。它使測試忽略大小寫。此標記僅作用于TestString和CondPattern的比較， 而對文件系統和子請求的測試不起作用。 ‘ornext&#124;OR’ (or next condition)。它以OR方式組合若干規則的條件，而不是默認的AND。典型的例子如下： RewriteCond %{REMOTE_HOST} ^host1.* [OR] RewriteCond %{REMOTE_HOST} ^host2.* [OR] RewriteCond %{REMOTE_HOST} ^host3.* RewriteRule …some special stuff for any of these hosts… 如果不用這個標記，則必須使用三個 條件/規則。]]></description>
			<content:encoded><![CDATA[<p>‘nocase|NC’ (no case)。它使測試忽略大小寫。此標記僅作用于TestString和CondPattern的比較， 而對文件系統和子請求的測試不起作用。<br />
‘ornext|OR’ (or next condition)。它以OR方式組合若干規則的條件，而不是默認的AND。典型的例子如下：<br />
RewriteCond %{REMOTE_HOST} ^host1.* [OR]<br />
RewriteCond %{REMOTE_HOST} ^host2.* [OR]<br />
RewriteCond %{REMOTE_HOST} ^host3.*<br />
RewriteRule …some special stuff for any of these hosts…<br />
如果不用這個標記，則必須使用三個 條件/規則。</p>
]]></content:encoded>
			<wfw:commentRss>http://rickykwan.iworkshop.com.hk/2010/04/680.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RewriteCond指令</title>
		<link>http://rickykwan.iworkshop.com.hk/2010/04/678.html</link>
		<comments>http://rickykwan.iworkshop.com.hk/2010/04/678.html#comments</comments>
		<pubDate>Sun, 04 Apr 2010 03:38:04 +0000</pubDate>
		<dc:creator>Ricky Kwan (RickyKwan)</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Program]]></category>
		<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://rickykwan.iworkshop.com.hk/?p=678</guid>
		<description><![CDATA[RewriteCond TestString CondPattern [Flags] RewriteCond指令定義了一個規則的條件，即在一個RewriteRule指令之前有一個或多個RewriteCond指令。 條件之后的重寫規則僅在當前URI與pattern匹配并且符合這些條件的時候才會起作用。 RewriteCond也有反向引用，但和RewriteRule中用$N引用不同，它使用%N反向引用。 RewriteCond引用Apache變量%{NAME_OF_VARIABLE}，如%{HTTP_HOST}。 RewriteCond的條件模式（CondPattern）除了使用perl樣式正則表達式，還有額外的規則： 1. 使用‘!’ 字符(驚嘆號)來實現匹配的反轉 2. ‘,=。 3. ‘-d’ (是一個目錄[directory])。將TestString視為一個路徑名并測試它是否存在而且是一個目錄. 4. ‘-f’ (是一個常規的文件[file])。將TestString視為一個路徑名并測試它是否存在而且是一個常規的文件. 5. ‘-s’ (是一個非空的常規文件[size])。將TestString視為一個路徑名并測試它是否存在而且是一個尺寸大于0的常規的文件. 6. ‘-l’ (是一個符號連接[link])。將TestString視為一個路徑名并測試它是否存在而且是一個符號連接. 7. ‘-F’ (對子請求有效的業已存在的文件)。測試TestString是否一個有效的文件， 而且可以被服務器當前已經配置的所有存取控制所存取。 它用一個內部子請求來做判斷，由于會降低服務器的性能，請小心使用!]]></description>
			<content:encoded><![CDATA[<p>RewriteCond TestString CondPattern [Flags]<br />
RewriteCond指令定義了一個規則的條件，即在一個RewriteRule指令之前有一個或多個RewriteCond指令。 條件之后的重寫規則僅在當前URI與pattern匹配并且符合這些條件的時候才會起作用。<br />
RewriteCond也有反向引用，但和RewriteRule中用$N引用不同，它使用%N反向引用。<br />
RewriteCond引用Apache變量%{NAME_OF_VARIABLE}，如%{HTTP_HOST}。<br />
RewriteCond的條件模式（CondPattern）除了使用perl樣式正則表達式，還有額外的規則：<br />
1. 使用‘!’ 字符(驚嘆號)來實現匹配的反轉<br />
2. ‘,=。<br />
3. ‘-d’ (是一個目錄[directory])。將TestString視為一個路徑名并測試它是否存在而且是一個目錄.<br />
4. ‘-f’ (是一個常規的文件[file])。將TestString視為一個路徑名并測試它是否存在而且是一個常規的文件.<br />
5. ‘-s’ (是一個非空的常規文件[size])。將TestString視為一個路徑名并測試它是否存在而且是一個尺寸大于0的常規的文件.<br />
6. ‘-l’ (是一個符號連接[link])。將TestString視為一個路徑名并測試它是否存在而且是一個符號連接.<br />
7. ‘-F’ (對子請求有效的業已存在的文件)。測試TestString是否一個有效的文件， 而且可以被服務器當前已經配置的所有存取控制所存取。 它用一個內部子請求來做判斷，由于會降低服務器的性能，請小心使用!</p>
]]></content:encoded>
			<wfw:commentRss>http://rickykwan.iworkshop.com.hk/2010/04/678.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RewriteRule指令</title>
		<link>http://rickykwan.iworkshop.com.hk/2010/03/674.html</link>
		<comments>http://rickykwan.iworkshop.com.hk/2010/03/674.html#comments</comments>
		<pubDate>Fri, 26 Mar 2010 03:34:21 +0000</pubDate>
		<dc:creator>Ricky Kwan (RickyKwan)</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Program]]></category>
		<category><![CDATA[amp]]></category>
		<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://rickykwan.iworkshop.com.hk/?p=674</guid>
		<description><![CDATA[RewriteRule Pattern Substitution [Flags] 在模式（Pattern）和替換（Substitution）中使用正則表達式來匹配相應的字符。 譬如有如下的URL： http://www.example.com/display.php?country=USA&#038;state=California&#038;city=San_Diego REQUEST_URI的值是“/country=USA &#038;state=California&#038;city=San_Diego”，要將國家州城市信息更友好的顯示給用，要顯示成這樣： http://www.example.com/USA/California/San_Diego 一個最常用的正則就是（.*）。它含有兩個元素：一是“點”，表示任 意字符；二是“星”，表示以前的全部字符。所以（.*）會匹配{REQUEST_URI}的所有字符。Rewrite重寫引擎的輸入串是 {REQUEST_URI}，也就是URL中出去域名以及“?”符號后的所有查詢字符。 重定向的URL中要提取出“USA/California/San_Diego”，匹配模式正則表達式的原型是： (.*)/(.*)/(.*) 以上正則，在{REQUEST_URI}中通過兩個“/”的分割存儲了三個值，為了解決我們具體問題，我們得加一點限制――畢竟，第一個和最后一個原子可以匹配任何字符。 開始，我們可以添加一些特殊的字符，比如表示正則“開始”或者“結束”，“^”字符表示正則的開始而“$”表示正則的結束。 ^(.*)/(.*)/(.*)$ {REQUEST_URI}是以“/”開頭。Apache 在更改版本的時候會更改正則引擎，一代Apache要求有斜杠而二代Apache卻不允許！但是我們可以用^/?（？表示匹配字符本身或者前一個字符）來兼容兩個版本的Apache。再加上對字符匹配的限制，最終匹配模式是： ^/?([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)$ 完整表示如下： RewriteEngine on RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)$ display.php?country=$1 &#038;state=$2&#038;city=$3 [L] RewriteRule使用$1到$9引用模式()中匹配的內容，稱為反向引用。對于URL： http://www.example.com/USA/California/San_Diego $1=USA，$2=California，$3=San_Diego]]></description>
			<content:encoded><![CDATA[<p>RewriteRule Pattern Substitution [Flags]<br />
在模式（Pattern）和替換（Substitution）中使用正則表達式來匹配相應的字符。<br />
譬如有如下的URL：</p>
<p><a href="http://www.example.com/display.php?country=USA&#038;state=California&#038;city=San_Diego">http://www.example.com/display.php?country=USA&#038;state=California&#038;city=San_Diego</a></p>
<p>REQUEST_URI的值是“/country=USA &#038;state=California&#038;city=San_Diego”，要將國家州城市信息更友好的顯示給用，要顯示成這樣：</p>
<p><a href="http://www.example.com/USA/California/San_Diego">http://www.example.com/USA/California/San_Diego</a></p>
<p><span id="more-674"></span><br />
一個最常用的正則就是（.*）。它含有兩個元素：一是“點”，表示任 意字符；二是“星”，表示以前的全部字符。所以（.*）會匹配{REQUEST_URI}的所有字符。Rewrite重寫引擎的輸入串是 {REQUEST_URI}，也就是URL中出去域名以及“?”符號后的所有查詢字符。<br />
重定向的URL中要提取出“USA/California/San_Diego”，匹配模式正則表達式的原型是：<br />
(.*)/(.*)/(.*)<br />
以上正則，在{REQUEST_URI}中通過兩個“/”的分割存儲了三個值，為了解決我們具體問題，我們得加一點限制――畢竟，第一個和最后一個原子可以匹配任何字符。<br />
開始，我們可以添加一些特殊的字符，比如表示正則“開始”或者“結束”，“^”字符表示正則的開始而“$”表示正則的結束。<br />
^(.*)/(.*)/(.*)$<br />
{REQUEST_URI}是以“/”開頭。Apache 在更改版本的時候會更改正則引擎，一代Apache要求有斜杠而二代Apache卻不允許！但是我們可以用^/?（？表示匹配字符本身或者前一個字符）來兼容兩個版本的Apache。再加上對字符匹配的限制，最終匹配模式是：<br />
^/?([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)$</p>
<p>完整表示如下：</p>
<blockquote><p>RewriteEngine on<br />
RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)$ display.php?country=$1 &#038;state=$2&#038;city=$3 [L]
</p></blockquote>
<p>RewriteRule使用$1到$9引用模式()中匹配的內容，稱為反向引用。對于URL：</p>
<p><a href="http://www.example.com/USA/California/San_Diego">http://www.example.com/USA/California/San_Diego</a></p>
<p>$1=USA，$2=California，$3=San_Diego</p>
]]></content:encoded>
			<wfw:commentRss>http://rickykwan.iworkshop.com.hk/2010/03/674.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>我的host檔案</title>
		<link>http://rickykwan.iworkshop.com.hk/2010/03/700.html</link>
		<comments>http://rickykwan.iworkshop.com.hk/2010/03/700.html#comments</comments>
		<pubDate>Thu, 25 Mar 2010 01:53:02 +0000</pubDate>
		<dc:creator>Ricky Kwan (RickyKwan)</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[amp]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://rickykwan.iworkshop.com.hk/?p=700</guid>
		<description><![CDATA[C:\WINDOWS\system32\drivers\etc\hosts # Copyright (c) 1993-1999 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column [...]]]></description>
			<content:encoded><![CDATA[<p>C:\WINDOWS\system32\drivers\etc\hosts</p>
<p># Copyright (c) 1993-1999 Microsoft Corp.<br />
#<br />
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.<br />
#<br />
# This file contains the mappings of IP addresses to host names. Each<br />
# entry should be kept on an individual line. The IP address should<br />
# be placed in the first column followed by the corresponding host name.<br />
# The IP address and the host name should be separated by at least one<br />
# space.<br />
#<br />
# Additionally, comments (such as these) may be inserted on individual<br />
# lines or following the machine name denoted by a &#8216;#&#8217; symbol.<br />
#<br />
# For example:<br />
#<br />
# 102.54.94.97 rhino.acme.com # source server<br />
# 38.25.63.10 x.acme.com # x client host<br />
##########################################################################<br />
# Created by LinHongJun for personal purpose.<br />
##########################################################################<br />
# To map IP address to host name.<br />
127.0.0.1 localhost<br />
##########################################################################<br />
# To block internet connection.<br />
#<br />
##########################################################################<br />
# To block host names of ads and tracking fxxking cookies.<br />
0.0.0.0 ads1.msn.com<br />
0.0.0.0 rad.msn.com<br />
0.0.0.0 rad.live.com<br />
# To block host names of ads and tracking cookies.<br />
# google<br />
0.0.0.0 googlesyndication.com<br />
0.0.0.0 pagead1.googlesyndication.com<br />
0.0.0.0 pagead2.googlesyndication.com<br />
0.0.0.0 pagead3.googlesyndication.com<br />
0.0.0.0 pagead4.googlesyndication.com<br />
0.0.0.0 pagead5.googlesyndication.com<br />
0.0.0.0 <a href="http://www.google-analytics.com">www.google-analytics.com</a><br />
# sina<br />
0.0.0.0 ad1.sina.com.cn<br />
0.0.0.0 ad2.sina.com.cn<br />
0.0.0.0 ad3.sina.com.cn<br />
0.0.0.0 ad4.sina.com.cn<br />
0.0.0.0 ad5.sina.com.cn<br />
# yahoo<br />
0.0.0.0 cm.p4p.cn.yahoo.com<br />
# allyes<br />
0.0.0.0 allyes.com<br />
0.0.0.0 adsina.allyes.com<br />
0.0.0.0 stbanner.allyes.com<br />
0.0.0.0 sina.allyes.com<br />
# yieldmanager<br />
0.0.0.0 ad.yieldmanager.com<br />
0.0.0.0 content.yieldmanager.com<br />
0.0.0.0 content.yieldmanager.edgesuite.net<br />
# tribalfusion<br />
0.0.0.0 tribalfusion.com<br />
0.0.0.0 a.tribalfusion.com<br />
# keyrun<br />
0.0.0.0 keyrun.com<br />
0.0.0.0 www1.keyrun.com<br />
0.0.0.0 pic0.keyrun.com<br />
0.0.0.0 pic1.keyrun.com<br />
0.0.0.0 pic2.keyrun.com<br />
# media-servers<br />
0.0.0.0 media-servers.net<br />
0.0.0.0 ad.media-servers.net<br />
0.0.0.0 content.media-servers.net<br />
# doubleclick<br />
0.0.0.0 ad.doubleclick.net<br />
0.0.0.0 ad.cn.doubleclick.net<br />
# adbrite<br />
0.0.0.0 click.adbrite.com<br />
0.0.0.0 4.adbrite.com<br />
0.0.0.0 <a href="http://www.adbrite.com">www.adbrite.com</a><br />
0.0.0.0 adbrite.com<br />
0.0.0.0 ads.adbrite.com<br />
# overtrue<br />
0.0.0.0 overture.com<br />
0.0.0.0 www50.overture.com<br />
0.0.0.0 cmhtml.hk.overture.com<br />
# mediaplex<br />
0.0.0.0 altfarm.mediaplex.com<br />
0.0.0.0 mediaplex.com<br />
# caishow<br />
0.0.0.0 caishow.com<br />
0.0.0.0 c03.caishow.com<br />
# adrevolver<br />
0.0.0.0 adrevolver.com<br />
# revsci<br />
0.0.0.0 ads.revsci.net<br />
# firstadsolution<br />
0.0.0.0 ad.firstadsolution.com<br />
# ad-flow<br />
0.0.0.0 ad.ad-flow.com<br />
# zanox<br />
0.0.0.0 ad.zanox.com<br />
# advertising<br />
0.0.0.0 advertising.com<br />
# casalemedia<br />
0.0.0.0 casalemedia.com<br />
# doubleclick<br />
0.0.0.0 doubleclick.net<br />
# fastclick<br />
0.0.0.0 fastclick.net<br />
# layer-ads<br />
0.0.0.0 layer-ads.de<br />
# onestat<br />
0.0.0.0 stat.onestat.com<br />
# statcounter<br />
0.0.0.0 statcounter.com<br />
# mop<br />
0.0.0.0 union.mop.com<br />
# tom<br />
0.0.0.0 ulinkdir.tom.com<br />
# targetpoint<br />
0.0.0.0 srs.targetpoint.com<br />
# yahoo<br />
0.0.0.0 rd.aliunion.cn.yahoo.com<br />
# bahamut<br />
0.0.0.0 ad.gamer.com.tw<br />
0.0.0.0 lkasoo.bahamut.com.tw<br />
# baidu<br />
0.0.0.0 eiv.baidu.com<br />
0.0.0.0 ma.baidu.com<br />
0.0.0.0 hc.baidu.com<br />
# 163<br />
0.0.0.0 popme.163.com<br />
# sohu<br />
0.0.0.0 images.sohu.com<br />
# qq<br />
0.0.0.0 adsfile.qq.com<br />
0.0.0.0 adsclick.qq.com<br />
# misc<br />
0.0.0.0 ad1.adpolestar.net<br />
0.0.0.0 ad.wretch.cc<br />
0.0.0.0 popunder.paypopup.com<br />
0.0.0.0 zt958.com<br />
0.0.0.0 536.net<br />
0.0.0.0 qyeee.com<br />
0.0.0.0 jia789.com<br />
0.0.0.0 ewowo.com<br />
0.0.0.0 yinsou.com<br />
0.0.0.0 mmonly.com<br />
0.0.0.0 <a href="http://www.mmonly.com">www.mmonly.com</a><br />
0.0.0.0 bbsbang.com<br />
0.0.0.0 18gou.com<br />
0.0.0.0 adultfriendfinder.com<br />
0.0.0.0 counter.ixlink.net<br />
0.0.0.0 m1.cn.2mdn.net<br />
0.0.0.0 adserving.cpxinteractive.com<br />
0.0.0.0 ad.adition.net<br />
0.0.0.0 textlink.ixlink.net<br />
# 如果你在玩Maple Story,那麼訪問官方網站的時候務必去掉下面這行.<br />
0.0.0.0 tw.maplestory.gamania.com<br />
##########################################################################</p>
]]></content:encoded>
			<wfw:commentRss>http://rickykwan.iworkshop.com.hk/2010/03/700.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>開啟mod_rewrite模塊</title>
		<link>http://rickykwan.iworkshop.com.hk/2010/03/672.html</link>
		<comments>http://rickykwan.iworkshop.com.hk/2010/03/672.html#comments</comments>
		<pubDate>Tue, 23 Mar 2010 03:33:44 +0000</pubDate>
		<dc:creator>Ricky Kwan (RickyKwan)</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web Program]]></category>
		<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://rickykwan.iworkshop.com.hk/?p=672</guid>
		<description><![CDATA[使用URL重寫功能，需要安裝mod_rewrite模塊。使用phpinfo()函數，找到Apache Modules section部分，可以看到當前apache加載模塊。 如果沒有開啟mod_rewrite, 就需要配置mod_rewrite.so的路徑： LoadModule rewrite_module modules/mod_rewrite.so Apache2內置了mod_rewirte，在配置虛擬主機的配置文件VirtualHost部分打開引擎：RewriteEngine on 這句之后就可以使用重寫語法了。 VirtualHost文件部分的Directory配置必須是： Options Includes FollowSymLinks #允許使用符號鏈接 AllowOverride All #允許目錄配置文件.htaccess。如果不使用是AllowOverride None 利用mod_rewrite重寫URL主要使用兩個基本的指令RewriteRule和RewriteCond。]]></description>
			<content:encoded><![CDATA[<p>使用URL重寫功能，需要安裝mod_rewrite模塊。使用phpinfo()函數，找到Apache Modules section部分，可以看到當前apache加載模塊。<br />
如果沒有開啟mod_rewrite, 就需要配置mod_rewrite.so的路徑：<br />
LoadModule rewrite_module modules/mod_rewrite.so<br />
Apache2內置了mod_rewirte，在配置虛擬主機的配置文件VirtualHost部分打開引擎：RewriteEngine on<br />
這句之后就可以使用重寫語法了。<br />
VirtualHost文件部分的Directory配置必須是：</p>
<p>Options Includes FollowSymLinks #允許使用符號鏈接<br />
AllowOverride All #允許目錄配置文件.htaccess。如果不使用是AllowOverride None</p>
<p>利用mod_rewrite重寫URL主要使用兩個基本的指令RewriteRule和RewriteCond。</p>
]]></content:encoded>
			<wfw:commentRss>http://rickykwan.iworkshop.com.hk/2010/03/672.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

