<?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>浮山狼de博客 &#187; htaccess</title>
	<atom:link href="https://www.fushanlang.com/tag/htaccess/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.fushanlang.com</link>
	<description>next station - 下一站，活在当下，且行且思</description>
	<lastBuildDate>Sat, 29 Nov 2014 15:14:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.5</generator>
	<item>
		<title>htaccess Rewrite重定向</title>
		<link>https://www.fushanlang.com/htaccess-rewrite-redirect-1097/</link>
		<comments>https://www.fushanlang.com/htaccess-rewrite-redirect-1097/#comments</comments>
		<pubDate>Sun, 10 Oct 2010 01:30:37 +0000</pubDate>
		<dc:creator><![CDATA[fushanlang]]></dc:creator>
				<category><![CDATA[webserver]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[重定向]]></category>

		<guid isPermaLink="false">http://www.fushanlang.com/blog/?p=1097</guid>
		<description><![CDATA[<p>最近在弄htaccess Rewrite重定向，很多语法生疏了，有找了一番，分享一下。 </p> RewriteEngine On&#124;Off <p>RewriteEngine 可用On 或者 Off 打开或关闭rewrite功能。 rewrite configurations 不会继承，所以你得给每个你想用 rewrite功能的virtual host加上这个指令。</p> RewriteBase URL-path <p>RewriteBase指令显式地设置了目录级重写的基准URL。在下文中，你可以看见RewriteRule可以用于目录级的配置文件中(.htaccess)并在局部范围内起作用，即规则实际处理的只是剥离了本地路径前缀的一部分。处理结束后，这个路径会被自动地附着回去。默认值是&#8221;RewriteBase physical-directory-path&#8221;。 在对一个新的URL进行替换时，此模块必须把这个URL重新注入到服务器处理中。为此，它必须知道其对应的URL前缀或者说URL基准。通常，此前缀就是对应的文件路径。但是，大多数网站URL不是直接对应于其物理文件路径的，因而一般不能做这样的假定! 所以在这种情况下，就必须用RewriteBase指令来指定正确的URL前缀。 如果你的网站服务器URL不是与物理文件路径直接对应的，而又需要使用RewriteBase指令，则必须在每个对应的.htaccess文件中指定RewriteRule 。</p> RewriteCond TestString CondPattern <p>RewriteCond指令定义了一个规则的条件，即在一个RewriteRule指令之前有一个或多个RewriteCond指令。条件之后的重写规则仅在当前URI与pattern匹配并且符合这些条件的时候才会起作用。 Notice:All of these tests can also be prefixed by an exclamation mark (&#8216;!&#8217;) to negate their meaning. 在正则表达式中，如果取反的话要用^,在这里需要用!号取反 </p> RewriteOptions Options <p>Sets some special options for the rewrite <span style="color:#777"> . . . &#8594; Read More: <a href="https://www.fushanlang.com/htaccess-rewrite-redirect-1097/">htaccess Rewrite重定向</a></span>]]></description>
				<content:encoded><![CDATA[<p>最近在弄htaccess Rewrite重定向，很多语法生疏了，有找了一番，分享一下。 </p>
<h4>RewriteEngine On|Off</h4>
<p>RewriteEngine 可用On 或者 Off 打开或关闭rewrite功能。<br />
rewrite configurations 不会继承，所以你得给每个你想用 rewrite功能的virtual host加上这个指令。</p>
<h4>RewriteBase URL-path<span id="more-1097"></span></h4>
<p>RewriteBase指令显式地设置了目录级重写的基准URL。在下文中，你可以看见RewriteRule可以用于目录级的配置文件中(.htaccess)并在局部范围内起作用，即规则实际处理的只是剥离了本地路径前缀的一部分。处理结束后，这个路径会被自动地附着回去。默认值是&#8221;RewriteBase physical-directory-path&#8221;。<br />
在对一个新的URL进行替换时，此模块必须把这个URL重新注入到服务器处理中。为此，它必须知道其对应的URL前缀或者说URL基准。通常，此前缀就是对应的文件路径。但是，大多数网站URL不是直接对应于其物理文件路径的，因而一般不能做这样的假定! 所以在这种情况下，就必须用RewriteBase指令来指定正确的URL前缀。<br />
如果你的网站服务器URL不是与物理文件路径直接对应的，而又需要使用RewriteBase指令，则必须在每个对应的.htaccess文件中指定RewriteRule 。</p>
<h4>RewriteCond TestString CondPattern</h4>
<p>RewriteCond指令定义了一个规则的条件，即在一个RewriteRule指令之前有一个或多个RewriteCond指令。条件之后的重写规则仅在当前URI与pattern匹配并且符合这些条件的时候才会起作用。<br />
<strong>Notice:All of these tests can also be prefixed by an exclamation mark (&#8216;!&#8217;) to negate their meaning. </strong><strong>在正则表达式中，如果取反的话要用^,在这里需要用!号取反 </strong></p>
<h4>RewriteOptions Options</h4>
<p>Sets some special options for the rewrite engine.<br />
设定一些特殊的选项给rewrite.<br />
The Option string can be currently only one:inherit<br />
inherit<br />
此值强制当前配置可以继承其父配置。 在虚拟主机级配置中，它意味着主服务器的映射表、条件和规则可以被继承。 在目录级配置中，它意味着其父目录的.htaccess中的条件和规则可以被继承。<br />
MaxRedirects=number<br />
为了避免目录级RewriteRule的无休止的内部重定向， 在此类重定向和500内部服务器错误次数达到一个最大值的时候， mod_rewrite会停止对此请求的处理。 如果你确实需要对每个请求允许大于10次的内部重定向，可以增大这个值。<br />
This forces the current configuration to inherit the configuration of the parent.<br />
强制当前的配置继承它parent的配置。<br />
在per-virtual-server环境下，意味着maps, conditions , rules会被继承!<br />
在per-directory 环境下 意味着它父目录的.htaccess配置中的conditions , rules 会被继承!</p>
<h4>RewriteRule Pattern Substitution [flags]</h4>
<p>Text:<br />
. 任何单字符<br />
[chars] Character class: One of chars<br />
[^chars] Character class: None of chars<br />
text1|text2 两者选一个: text1 or text2</p>
<p>Quantifiers:量词<br />
? 0 or 1 of the 前面的 text<br />
* 0 or N of the 前面的 text (N &gt; 0)<br />
+ 1 or N of the 前面的 text (N &gt; 1)</p>
<p>Grouping:<br />
(text) Grouping of text</p>
<p>可用$N来得到()中的内容:<br />
( (a|b) | (c|d))<br />
$1 $2 $3</p>
<p>Anchors:<br />
^ Start of line anchor<br />
$ End of line anchor</p>
<p>Escaping:<br />
\char escape that particular char<br />
(for instance to specify the chars &#8220;.[]()&#8221; etc.)</p>
<p>注意：没有并且&amp;</p>
<p>=========================================================================================<br />
<strong>flags</strong> </p>
<ol>
<li>
<h4>&#8216;redirect|R [=code]&#8217; (强制重定向 redirect)</h4>
<p>以http://thishost[:thisport]/(使新的URL成为一个URI) 为前缀的Substitution可以强制性执行一个外部重定向。 如果code没有指定，则产生一个HTTP响应代码302(临时性移动)。 如果需要使用在300-400范围内的其他响应代码，只需在此指定这个数值即可， 另外，还可以使用下列符号名称之一: temp (默认的), permanent, seeother. 用它可以把规范化的URL反馈给客户端，如, 重写&#8220;/~&#8221;为 &#8220;/u/&#8221;，或对/u/user加上斜杠，等等。 注意: 在使用这个标记时，必须确保该替换字段是一个有效的URL! 否则，它会指向一个无效的位置! 并且要记住，此标记本身只是对URL加上 http://thishost[:thisport]/的前缀，重写操作仍然会继续。 通常，你会希望停止重写操作而立即重定向，则还需要使用&#8217;L&#8217;标记.</li>
<li>
<h4>&#8216;forbidden|F&#8217; (强制URL为被禁止的 forbidden)</h4>
<p>强制当前URL为被禁止的，即，立即反馈一个HTTP响应代码403(被禁止的)。 使用这个标记，可以链接若干RewriteConds以有条件地阻塞某些URL。</li>
<li>
<h4>&#8216;gone|G&#8217; (强制URL为已废弃的 gone)</h4>
<p>强制当前URL为已废弃的，即，立即反馈一个HTTP响应代码410(已废弃的)。 使用这个标记，可以标明页面已经被废弃而不存在了.</li>
<li>
<h4>&#8216;proxy|P&#8217; (强制为代理 proxy)</h4>
<p>此标记使替换成分被内部地强制为代理请求，并立即(即， 重写规则处理立即中断)把处理移交给代理模块。 你必须确保此替换串是一个有效的(比如常见的以 http://hostname开头的)能够为Apache代理模块所处理的URI。 使用这个标记，可以把某些远程成分映射到本地服务器名称空间， 从而增强了ProxyPass指令的功能。 注意: 要使用这个功能，代理模块必须编译在Apache服务器中。 如果你不能确定，可以检查&#8220;httpd -l&#8221;的输出中是否有mod_proxy.c。 如果有，则mod_rewrite可以使用这个功能； 如果没有，则必须启用mod_proxy并重新编译&#8220;httpd&#8221;程序。</li>
<li>
<h4>&#8216;last|L&#8217; (最后一个规则 last)</h4>
<p>立即停止重写操作，并不再应用其他重写规则。 它对应于Perl中的last命令或C语言中的break命令。 这个标记可以阻止当前已被重写的URL为其后继的规则所重写。 举例，使用它可以重写根路径的URL(&#8216;/&#8217;)为实际存在的URL, 比如, &#8216;/e/www/&#8217;.</li>
<li>
<h4>&#8216;next|N&#8217; (重新执行 next round)</h4>
<p>重新执行重写操作(从第一个规则重新开始). 这时再次进行处理的URL已经不是原始的URL了，而是经最后一个重写规则处理的URL。 它对应于Perl中的next命令或C语言中的continue命令。 此标记可以重新开始重写操作，即, 立即回到循环的头部。但是要小心，不要制造死循环!</li>
<li>
<h4>&#8216;chain|C&#8217; (与下一个规则相链接 chained)</h4>
<p>此标记使当前规则与下一个(其本身又可以与其后继规则相链接的， 并可以如此反复的)规则相链接。 它产生这样一个效果: 如果一个规则被匹配，通常会继续处理其后继规则， 即，这个标记不起作用；如果规则不能被匹配， 则其后继的链接的规则会被忽略。比如，在执行一个外部重定向时， 对一个目录级规则集，你可能需要删除&#8220;.www&#8221; (此处不应该出现&#8220;.www&#8221;的)。</li>
<li>
<h4>&#8216;type|T=MIME-type&#8217; (强制MIME类型 type)</h4>
<p>强制目标文件的MIME类型为MIME-type。 比如，它可以用于模拟mod_alias中的ScriptAlias指令， 以内部地强制被映射目录中的所有文件的MIME类型为&#8220;application/x-httpd-cgi&#8221;.</li>
<li>
<h4>&#8216;nosubreq|NS&#8217; (仅用于不对内部子请求进行处理 no internal sub-request)</h4>
<p>在当前请求是一个内部子请求时，此标记强制重写引擎跳过该重写规则。 比如，在mod_include试图搜索可能的目录默认文件(index.xxx)时， Apache会内部地产生子请求。对子请求，它不一定有用的，而且如果整个规则集都起作用， 它甚至可能会引发错误。所以，可以用这个标记来排除某些规则。 根据你的需要遵循以下原则: 如果你使用了有CGI脚本的URL前缀，以强制它们由CGI脚本处理， 而对子请求处理的出错率(或者开销)很高，在这种情况下，可以使用这个标记。</li>
<li>
<h4>&#8216;nocase|NC&#8217; (忽略大小写 no case)</h4>
<p>它使Pattern忽略大小写，即, 在Pattern与当前URL匹配时，&#8217;A-Z&#8217; 和&#8217;a-z&#8217;没有区别。</li>
<li>
<h4>&#8216;qsappend|QSA&#8217; (追加请求串 query string append)</h4>
<p>此标记强制重写引擎在已有的替换串中追加一个请求串，而不是简单的替换。 如果需要通过重写规则在请求串中增加信息，就可以使用这个标记。</li>
<li>
<h4>&#8216;noescape|NE&#8217; (在输出中不对URI作转义 no URI escaping)</h4>
<p>此标记阻止mod_rewrite对重写结果应用常规的URI转义规则。 一般情况下，特殊字符(如&#8217;%&#8217;, &#8216;$&#8217;, &#8216;;&#8217;等)会被转义为等值的十六进制编码。 此标记可以阻止这样的转义，以允许百分号等符号出现在输出中，如： RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]<br />
可以使&#8217;/foo/zed&#8217;转向到一个安全的请求&#8217;/bar?arg=P1=zed&#8217;.</li>
<li>
<h4>&#8216;passthrough|PT&#8217; (移交给下一个处理器 pass through)</h4>
<p>此标记强制重写引擎将内部结构request_rec中的uri字段设置为 filename字段的值，它只是一个小修改，使之能对来自其他URI到文件名翻译器的 Alias，ScriptAlias, Redirect 等指令的输出进行后续处理。举一个能说明其含义的例子： 如果要通过mod_rewrite的重写引擎重写/abc为/def， 然后通过mod_alias使/def转变为/ghi，可以这样: RewriteRule ^/abc(.*) /def$1 [PT]<br />
Alias /def /ghi<br />
如果省略了PT标记，虽然mod_rewrite运作正常， 即, 作为一个使用API的URI到文件名翻译器， 它可以重写uri=/abc/&#8230;为filename=/def/&#8230;， 但是，后续的mod_alias在试图作URI到文件名的翻译时，则会失效。<br />
注意: 如果需要混合使用不同的包含URI到文件名翻译器的模块时， 就必须使用这个标记。混合使用mod_alias和mod_rewrite就是个典型的例子。</p>
<div>For Apache hackers<br />
如果当前Apache API除了URI到文件名hook之外，还有一个文件名到文件名的hook， 就不需要这个标记了! 但是，如果没有这样一个hook，则此标记是唯一的解决方案。 Apache Group讨论过这个问题，并在Apache 2.0 版本中会增加这样一个hook。</div>
</li>
<li>
<h4>&#8216;skip|S=num&#8217; (跳过后继的规则 skip)</h4>
<p>此标记强制重写引擎跳过当前匹配规则后继的num个规则。 它可以实现一个伪if-then-else的构造: 最后一个规则是then从句，而被跳过的skip=N个规则是else从句. (它和&#8217;chain|C&#8217;标记是不同的!)</li>
<li>
<h4>&#8216;env|E=VAR:VAL&#8217; (设置环境变量 environment variable)</h4>
<p>此标记使环境变量VAR的值为VAL, VAL可以包含可扩展的反向引用的正则表达式$N和%N。 此标记可以多次使用以设置多个变量。 这些变量可以在其后许多情况下被间接引用，但通常是在XSSI (via or CGI (如 $ENV{&#8216;VAR&#8217;})中， 也可以在后继的RewriteCond指令的pattern中通过%{ENV:VAR}作引用。 使用它可以从URL中剥离并记住一些信息。</li>
<li>
<h4>&#8216;cookie|CO=NAME:VAL:domain[:lifetime[:path]]&#8217; (设置cookie)</h4>
<p>它在客户端浏览器上设置一个cookie。 cookie的名称是NAME，其值是VAL。 domain字段是该cookie的域，比如&#8217;.apache.org&#8217;, 可选的lifetime是cookie生命期的分钟数， 可选的path是cookie的路径。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>https://www.fushanlang.com/htaccess-rewrite-redirect-1097/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wordpress应用之htaccess</title>
		<link>https://www.fushanlang.com/htaccess-wordpress-applications-624/</link>
		<comments>https://www.fushanlang.com/htaccess-wordpress-applications-624/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 13:33:58 +0000</pubDate>
		<dc:creator><![CDATA[fushanlang]]></dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[htaccess]]></category>

		<guid isPermaLink="false">http://www.fushanlang.com/blog/?p=624</guid>
		<description><![CDATA[1.实现wordpress防盗链 <p>直接放个.htaccess文件到uploads目录下，参考了网上若干.htaccess的写法，最后我的版本如下：</p> RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !magustest.com [NC] RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC] RewriteCond %{HTTP_REFERER} !xianguo.com [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !google.cn [NC] RewriteCond %{HTTP_REFERER} !feedburner.com [NC] RewriteCond %{HTTP_REFERER} !feedsky.com [NC] RewriteCond %{HTTP_REFERER} !testingjob.net [NC] RewriteRule .*.(jpg&#124;gif&#124;png&#124;bmp&#124;swf&#124;jpeg)$ xxx/forbid.png [R,NC,L] <p>RewriteCond 里面的第一行是说如果没有Referer，也就是直接访问，那么可以看。接下来的就是白名单，其中允许了谷歌，抓虾，鲜果等网站，那么在这些网站里面订阅我的博客的朋友也都能看到图片了。最后一行RewriteRule就是如果后缀名是那6个（都是吃流量的多媒体文件）的话，那么就显示为xxx/temp/forbid.png这个图片。</p> <p>一般Linux类和Unix类虚机主机都支持重写.htaccess。这样子设置以后，在常见的阅读器中查看博客文章也能看到图片，同时也能有效地防止盗链图片而导致的流量超标。</p> 2.压缩静态数据 <p>以下.htaccess代码节约了你（以及你的访问者）的带宽，减轻了博客页面的压力。</p> <p>AddOutputFilterByType DEFLATE text/html text/plain text/xml <span style="color:#777"> . . . &#8594; Read More: <a href="https://www.fushanlang.com/htaccess-wordpress-applications-624/">wordpress应用之htaccess</a></span>]]></description>
				<content:encoded><![CDATA[<h2>1.实现wordpress防盗链</h2>
<p>直接放个.htaccess文件到uploads目录下，参考了网上若干.htaccess的写法，最后我的版本如下：</p>
<blockquote>
<pre>RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !magustest.com [NC]
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !google.cn [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]
RewriteCond %{HTTP_REFERER} !testingjob.net [NC]
RewriteRule .*.(jpg|gif|png|bmp|swf|jpeg)$ xxx/forbid.png [R,NC,L]</pre>
</blockquote>
<p>RewriteCond 里面的第一行是说如果没有Referer，也就是直接访问，那么可以看。接下来的就是白名单，其中允许了谷歌，抓虾，鲜果等网站，那么在这些网站里面订阅我的博客的朋友也都能看到图片了。最后一行RewriteRule就是如果后缀名是那6个（都是吃流量的多媒体文件）的话，那么就显示为xxx/temp/forbid.png这个图片。</p>
<p>一般Linux类和Unix类虚机主机都支持重写.htaccess。这样子设置以后，在常见的阅读器中查看博客文章也能看到图片，同时也能有效地防止盗链图片而导致的流量超标。<span id="more-624"></span></p>
<h2>2.压缩静态数据</h2>
<p>以下.htaccess代码节约了你（以及你的访问者）的带宽，减轻了博客页面的压力。</p>
<blockquote><p>AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript<br />
BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
BrowserMatch ^Mozilla/4.0[678] no-gzip<br />
BrowserMatch bMSIE !no-gzip !gzip-only-text/html</p></blockquote>
<h2>3.禁止机器人评论</h2>
<p>事实证明，很多垃圾评论机器人无处不在。 下列代码会追踪评论的来源（评论者所在的页面），如果评论者试图不经你的博客擅自进入wp-comments-post.php文件，这些代码会禁止评论发布。更改第四行命令，换成自己博客的url。</p>
<blockquote><p>RewriteEngine On<br />
RewriteCond %{REQUEST_METHOD} POST<br />
RewriteCond %{REQUEST_URI} .wp-comments-post.php*<br />
RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^$<br />
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]</p></blockquote>
<p>4.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.fushanlang.com/htaccess-wordpress-applications-624/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>(转)总结新手容易犯的htaccess文件五大优化错误</title>
		<link>https://www.fushanlang.com/%e8%bd%ac%e6%80%bb%e7%bb%93%e6%96%b0%e6%89%8b%e5%ae%b9%e6%98%93%e7%8a%af%e7%9a%84htaccess%e6%96%87%e4%bb%b6%e4%ba%94%e5%a4%a7%e4%bc%98%e5%8c%96%e9%94%99%e8%af%af-57/</link>
		<comments>https://www.fushanlang.com/%e8%bd%ac%e6%80%bb%e7%bb%93%e6%96%b0%e6%89%8b%e5%ae%b9%e6%98%93%e7%8a%af%e7%9a%84htaccess%e6%96%87%e4%bb%b6%e4%ba%94%e5%a4%a7%e4%bc%98%e5%8c%96%e9%94%99%e8%af%af-57/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 07:33:53 +0000</pubDate>
		<dc:creator><![CDATA[fushanlang]]></dc:creator>
				<category><![CDATA[webserver]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[htaccess]]></category>

		<guid isPermaLink="false">http://www.fushanlang.com/blog/?p=57</guid>
		<description><![CDATA[<p>1、.htaccess文件是Apache的配置文件，因此直接决定了此文件使用IIS构建的网站无效。</p> <p>在官方的说明中，.htaccess是网站的一个分布式配置文件，分布式顾名思义，就是可以分布在各个不同的目录下面，每个文件都有其不同的作用域。比如将文件放在“admin”目录下，那么这个配置文件只对admin及其子目录下的文件生效。</p> <p>然而有很多初入门道的朋友并不了解，因此不知道如何处理这个配置文件。在此我告诉大家，如果你想要整个网站都生效，就将此文件建立在网站根目录下即可。</p> <p>2、此文件极易造成服务器500错误，并且大部分原因都是Windows文件编码错误。</p> <p>由于该文件是原生Linux下的文件，因此在Windows下不能使用系统自带的记事本程序创建这个文件。但是，可以通过编码转换，去掉 BOM等多余的内容。但是，我们强烈建议使用Notepad2等富文本编辑器来创建这个文件，并且将之保存为UTF-8这种国际编码格式。当然，也可以使 用一些在线htaccess编辑器来自动创建这个文件，文后将会有相关介绍。</p> <p>3、.htaccess文件设置图片防盗链时，替换的目标图片一定不能是当前域下的图片文件。否则将会造成循环错误。</p> <p>很多朋友会使用.htaccess文件达到图片防盗链的效果，减少空间由于图片盗链浪费的流量。但是，却忽视了这一点：不能将替换后的目标 图片放在本域中。原因如下：本域使用了图片防盗链功能，因此，所有通过其它域访问本域的图片地址都会被重写为目标地址，但如果目标地址也是本域中的图片， 就会造成循环错误，甚至可能导致客户端浏览器假死。</p> <p>4、WWW域名统一跳转指令的安全写法。</p> <p>很多朋友都会通过.htaccess文件将带WWW的域名与不带WWW的域名统一，然后写出了类似如下语句：</p> RewriteCond %{HTTP_HOST} !^www.domain.com? [NC] <p>注意，这是一种极不安全且不负责任的写法，原因在于使用了“!”（非）。这种写法将会把.htaccess所有作用域下的网址都进行跳转， 比如会将“m.domain.com”跳转成“www.domain.com”，会把“bbs.domain.com也跳转成 “www.domain.com”。其可能造成的问题可想而知。所以，该指令的正确、安全的写法应该是：</p> RewriteCond %{HTTP_HOST} ^(domain\.com)(:80)? [NC] <p>这就避免了干扰其它的子域名，同时，也避免了主机其它端口的跳转。这是一种非常严格而且安全的写法。</p> <p>5、是否开启文件列表显示的指令：</p> Options -Indexes 或者 Options +Indexes <p>的indexes前面一定要添加“+”或者“-”，否则将会覆盖主机上级配置文件定义的其它重要设置。而这项在网上广为流传的“htaccessEditor”编辑器中竟然出现错误了。因此造成很多朋友发现使用这项功能后网站无法浏览了。原因是这样的：</p> <p>Options后面的参数全部写上应该是：options (+-)ExecCGI  (+-)FollowSymLinks  (+-)Includes  (+-)Indexes……如果不在参数的前面添加“+”或“-”，将会把指令默认为除了这个参数为开启，其它的参数都为关闭，与Linux下的 Chmod命令类似。这就造成了把ExecCGI也关闭了，将会导致所有页面无法执行脚本。</p> <p>上面所述这些常见错误都是我在编写“htaccess文件在线编辑器”时发现的，并且其中也有很多是网友们给我提的建议，在此我表示感谢！</p> <p>同时，我给大家附上了几款非常好用的htaccess在线编辑器供大家收藏使用：</p> <p>1、.htaccess Generator：http://developers.evrsoft.com/tools-htaccess-generator.shtml</p> <p>这款编辑器的特点是可以方便的定义图片防盗链、404错误页面地址还有图片缓存控制与密码保护，但是是英文页面，且功能单一，不能进行灵活的设置。</p> <p>2、.htaccess file generator：http://cooletips.de/htaccess/</p> <p>这款编辑器功能强大，是在线编辑器的鼻祖。但是页面凌乱，语义模糊，没有任何说明，非常容易填写错误。但其强大的功能仍然是高手们的不二选择。</p> <p>3、Htaccess Disable Hotlinking Code Generator：http://www.htmlbasix.com/disablehotlinking.shtml</p> <p>这是专门用于生成图片防盗链的工具，因此，它也就有一个唯一的图片防盗链功能，但是做得非常细致，也非常灵活。可以详细的定义图片文件类型、目标图片的地址等参数。</p> <p>4、.htaccess文件在线生成器：http://www.wangqu.org/htaccess/</p> <span style="color:#777"> . . . &#8594; Read More: <a href="https://www.fushanlang.com/%e8%bd%ac%e6%80%bb%e7%bb%93%e6%96%b0%e6%89%8b%e5%ae%b9%e6%98%93%e7%8a%af%e7%9a%84htaccess%e6%96%87%e4%bb%b6%e4%ba%94%e5%a4%a7%e4%bc%98%e5%8c%96%e9%94%99%e8%af%af-57/">(转)总结新手容易犯的htaccess文件五大优化错误</a></span>]]></description>
				<content:encoded><![CDATA[<p><strong>1、.htaccess文件是Apache的配置文件，因此直接决定了此文件使用IIS构建的网站无效。</strong></p>
<p>在官方的说明中，.htaccess是网站的一个分布式配置文件，分布式顾名思义，就是可以分布在各个不同的目录下面，每个文件都有其不同的作用域。比如将文件放在“admin”目录下，那么这个配置文件只对admin及其子目录下的文件生效。</p>
<p>然而有很多初入门道的朋友并不了解，因此不知道如何处理这个配置文件。在此我告诉大家，如果你想要整个网站都生效，就将此文件建立在网站根目录下即可。</p>
<p><strong>2、此文件极易造成服务器500错误，并且大部分原因都是Windows文件编码错误。</strong></p>
<p>由于该文件是原生Linux下的文件，因此在Windows下不能使用系统自带的记事本程序创建这个文件。但是，可以通过编码转换，去掉 BOM等多余的内容。但是，我们强烈建议使用Notepad2等富文本编辑器来创建这个文件，并且将之保存为UTF-8这种国际编码格式。当然，也可以使 用一些在线htaccess编辑器来自动创建这个文件，文后将会有相关介绍。</p>
<p><strong>3、.htaccess文件设置图片防盗链时，替换的目标图片一定不能是当前域下的图片文件。</strong>否则将会造成循环错误。</p>
<p>很多朋友会使用.htaccess文件达到图片防盗链的效果，减少空间由于图片盗链浪费的流量。但是，却忽视了这一点：不能将替换后的目标 图片放在本域中。原因如下：本域使用了图片防盗链功能，因此，所有通过其它域访问本域的图片地址都会被重写为目标地址，但如果目标地址也是本域中的图片， 就会造成循环错误，甚至可能导致客户端浏览器假死。<span id="more-57"></span></p>
<p><strong>4、WWW域名统一跳转指令的安全写法。</strong></p>
<p>很多朋友都会通过.htaccess文件将带WWW的域名与不带WWW的域名统一，然后写出了类似如下语句：</p>
<table border="0" cellspacing="0" cellpadding="6" width="95%" align="center">
<tbody>
<tr>
<td bgcolor="#fdfddf">RewriteCond %{HTTP_HOST} !^www.domain.com? [NC]</td>
</tr>
</tbody>
</table>
<p>注意，这是一种极不安全且不负责任的写法，原因在于使用了“!”（非）。这种写法将会把.htaccess所有作用域下的网址都进行跳转， 比如会将“m.domain.com”跳转成“www.domain.com”，会把“bbs.domain.com也跳转成 “www.domain.com”。其可能造成的问题可想而知。所以，该指令的正确、安全的写法应该是：</p>
<table border="0" cellspacing="0" cellpadding="6" width="95%" align="center">
<tbody>
<tr>
<td bgcolor="#fdfddf">RewriteCond %{HTTP_HOST} ^(domain\.com)(:80)? [NC]</td>
</tr>
</tbody>
</table>
<p>这就避免了干扰其它的子域名，同时，也避免了主机其它端口的跳转。这是一种非常严格而且安全的写法。</p>
<p><strong>5、是否开启文件列表显示的指令：</strong></p>
<table border="0" cellspacing="0" cellpadding="6" width="95%" align="center">
<tbody>
<tr>
<td bgcolor="#fdfddf">Options -Indexes 或者 Options +Indexes</td>
</tr>
</tbody>
</table>
<p>的indexes前面一定要添加“+”或者“-”，否则将会覆盖主机上级配置文件定义的其它重要设置。而这项在网上广为流传的“htaccessEditor”编辑器中竟然出现错误了。因此造成很多朋友发现使用这项功能后网站无法浏览了。原因是这样的：</p>
<p>Options后面的参数全部写上应该是：options (+-)ExecCGI  (+-)FollowSymLinks  (+-)Includes  (+-)Indexes……如果不在参数的前面添加“+”或“-”，将会把指令默认为除了这个参数为开启，其它的参数都为关闭，与Linux下的 Chmod命令类似。这就造成了把ExecCGI也关闭了，将会导致所有页面无法执行脚本。</p>
<p>上面所述这些常见错误都是我在编写“htaccess文件在线编辑器”时发现的，并且其中也有很多是网友们给我提的建议，在此我表示感谢！</p>
<p><strong>同时，我给大家附上了几款非常好用的htaccess在线编辑器供大家收藏使用：</strong></p>
<p><strong>1、.htaccess Generator：</strong>http://developers.evrsoft.com/tools-htaccess-generator.shtml</p>
<p>这款编辑器的特点是可以方便的定义图片防盗链、404错误页面地址还有图片缓存控制与密码保护，但是是英文页面，且功能单一，不能进行灵活的设置。</p>
<p><strong>2、.htaccess file generator：</strong>http://cooletips.de/htaccess/</p>
<p>这款编辑器功能强大，是在线编辑器的鼻祖。但是页面凌乱，语义模糊，没有任何说明，非常容易填写错误。但其强大的功能仍然是高手们的不二选择。</p>
<p><strong>3、Htaccess Disable Hotlinking Code Generator：</strong>http://www.htmlbasix.com/disablehotlinking.shtml</p>
<p>这是专门用于生成图片防盗链的工具，因此，它也就有一个唯一的图片防盗链功能，但是做得非常细致，也非常灵活。可以详细的定义图片文件类型、目标图片的地址等参数。</p>
<p><strong>4、.htaccess文件在线生成器：</strong><span style="color: #000000;">http://www.wangqu.org/htaccess/</span></p>
<p>客观的说这是在众多生成器中一款功能最全，最人性化的在线编辑器了。中文界面，包含图片防盗链、MIME类型添加、访问权限控制、自定义默 认页面、自定义各种错误文档、网页重定向、图片缓存等九大功能，每一款功能都经过仔细的调试，并且有详细的填写示例与功能说明供参考。同时，它还有下载生 成的.htaccess文件的功能，避免了自己建立文件造成的各种错误。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.fushanlang.com/%e8%bd%ac%e6%80%bb%e7%bb%93%e6%96%b0%e6%89%8b%e5%ae%b9%e6%98%93%e7%8a%af%e7%9a%84htaccess%e6%96%87%e4%bb%b6%e4%ba%94%e5%a4%a7%e4%bc%98%e5%8c%96%e9%94%99%e8%af%af-57/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>htaccess实现子目录指向主域名</title>
		<link>https://www.fushanlang.com/htaccess-to-achieve-a-subdirectory-to-the-main-domain-name-48/</link>
		<comments>https://www.fushanlang.com/htaccess-to-achieve-a-subdirectory-to-the-main-domain-name-48/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 19:12:23 +0000</pubDate>
		<dc:creator><![CDATA[fushanlang]]></dc:creator>
				<category><![CDATA[webserver]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[URL重定向]]></category>

		<guid isPermaLink="false">http://www.fushanlang.com/blog/?p=48</guid>
		<description><![CDATA[今天想为blog加一个重定向，访问主域名直接定向到blog目录，即主域名绑定子目录。之前采用index.html里的 meta和window.location ，好像对SEO不好，而且有明显的转向等待时间。所以搜索了一下其他解决方案。找到如下代码，需要借助 htaccess文件。 # .htaccess main domain to subdirectory redirect # Copy and paste the following code into the .htaccess file # in the public_html folder of your hosting account # make the changes to the file according to the instructions. # Do not change this line. RewriteEngine on # Change yourdomain.com to be your main domain. RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$ # Change &#8216;subdirectory&#8217; to be the directory you will use for your main domain. RewriteCond %{REQUEST_URI} !^/subdirectory/ # Don&#8217;t change this line. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Change &#8216;subdirectory&#8217; to be the directory you will use for your main domain. RewriteRule ^(.*)$ /subdirectory/$1 # Change yourdomain.com to be your main domain again. # Change &#8216;subdirectory&#8217; to be the directory you will use for your main domain # followed by / then the main file for your site, index.php, index.html, etc. RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$ RewriteRule ^(/)?$ subdirectory/index.php [L] .htaccess指向index.php 最末一句使得首页访问yourdomain.com指向 blog的index.php 修改之后，再通过youdomain.com访问会直接跳转（并非URL跳转）到blog目录，如果blog是采用wordpress的话，如果想以后的链接URL中没有/blog/ 的话可以在后台Setting里的General 里修改URL 为youdomain.com,这样绑定就非常完美的完成了。 ]]></description>
				<content:encoded><![CDATA[<div>今天想为blog加一个重定向，访问主域名直接定向到blog目录，即主域名绑定子目录。之前采用index.html里的 meta和window.location ，好像对SEO不好，而且有明显的转向等待时间。所以搜索了一下其他解决方案。找到如下代码，需要借助</div>
<div>htaccess文件。</div>
<li># .htaccess main domain to subdirectory redirect</li>
<li># Copy and paste the following code into the .htaccess file</li>
<li># in the public_html folder of your hosting account</li>
<li># make the changes to the file according to the instructions.</li>
<li># Do not change this line.</li>
<li>RewriteEngine on</li>
<li># Change yourdomain.com to be your main domain.</li>
<li>RewriteCond %{HTTP_HOST} ^(<a href="http://www.)?yourdomain.com$">www.)?yourdomain.com$</a></li>
<li># Change &#8216;subdirectory&#8217; to be the directory you will use for your main domain.</li>
<li>RewriteCond %{REQUEST_URI} !^/subdirectory/</li>
<li># Don&#8217;t change this line.</li>
<li>RewriteCond %{REQUEST_FILENAME} !-f</li>
<li>RewriteCond %{REQUEST_FILENAME} !-d</li>
<li># Change &#8216;subdirectory&#8217; to be the directory you will use for your main domain.</li>
<li>RewriteRule ^(.*)$ /subdirectory/$1</li>
<li># Change yourdomain.com to be your main domain again.</li>
<li># Change &#8216;subdirectory&#8217; to be the directory you will use for your main domain</li>
<li># followed by / then the main file for your site, index.php, index.html, etc.</li>
<li>RewriteCond %{HTTP_HOST} ^(www.)?yourdomain.com$</li>
<li><span style="color: #ff6600;">RewriteRule ^(/)?$ subdirectory/index.php [L]</span></li>
<li></li>
<div><strong>.htaccess指向index.php </strong>最末一句使得首页访问yourdomain.com指向 blog的index.php</div>
<div>修改之后，再通过youdomain.com访问会直接跳转（并非URL跳转）到blog目录，如果blog是采用wordpress的话，如果想以后的链接URL中没有/blog/ 的话可以在后台Setting里的General 里修改URL 为youdomain.com,这样绑定就非常完美的完成了。</div>
]]></content:encoded>
			<wfw:commentRss>https://www.fushanlang.com/htaccess-to-achieve-a-subdirectory-to-the-main-domain-name-48/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.313 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2026-01-05 00:10:01 -->
