<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Ops运维 | Mr`kang Blog｜小豆子]]></title> 
<link>https://www.cnmysql.com/index.php</link> 
<description><![CDATA[关注服务器运维技术、DB优化、Docker虚拟化、自动化运维、工作积累]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Ops运维 | Mr`kang Blog｜小豆子]]></copyright>
<item>
<link>https://www.cnmysql.com/post//</link>
<title><![CDATA[四个例子实战讲解.htaccess文件rewrite规则]]></title> 
<author>kangyang &lt;kangyang315@qq.com&gt;</author>
<category><![CDATA[WEB技术]]></category>
<pubDate>Fri, 05 Sep 2014 07:36:28 +0000</pubDate> 
<guid>https://www.cnmysql.com/post//</guid> 
<description>
<![CDATA[ 
	<span style="font-family: 宋体;"><span style="font-size: 12px;"><br/>利用rewrite在apache中实现子目录跳转成子域名<br/><div class="code"><br/>RewriteEngine on<br/>Redirect 301 /bbs http://bbs.myhnet.cn<br/>Redirect 301 /blog http://blog.myhnet.cn<br/>Redirect 301 /spaces http://spaces.myhnet.cn</div><br/>apache强制https<br/><div class="code"><br/>RewriteEngine on<br/>RewriteCond %&#123;HTTPS&#125;&nbsp;&nbsp; !^on$&nbsp;&nbsp; &#91;NC&#93;<br/>RewriteRule&nbsp;&nbsp; .&nbsp;&nbsp; https://%&#123;HTTP_HOST&#125;%&#123;REQUEST_URI&#125;&nbsp;&nbsp;&nbsp;&nbsp;&#91;L&#93; </div><br/>apache的rewrite跳转中的目录排除 <br/><div class="code"><br/>RewriteCond %&#123;REQUEST_URI&#125; !^/xxxx/xxxx/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>RewriteRule ^/(.*&#92;.(jpg&#124;png&#124;gif&#124;ico))$ http://x.xxxx.com/xxx/$1 &#91;R=301,L&#93; </div><br/>一、防盗链功能<br/><div class="code"><br/>RewriteEngine On<br/>RewriteCond %&#123;HTTP_REFERER&#125; !^http://(.+.)?mysite.com/ &#91;NC&#93;<br/>RewriteCond %&#123;HTTP_REFERER&#125; !^$<br/>RewriteRule .*.(jpe?g&#124;gif&#124;bmp&#124;png)$ /images/nohotlink.jpg &#91;L&#93; </div><br/>逐行讲解一下：<br/>1.打开Rewrite功能。有可能服务器设置里已经是全局下打开了，但是多写也没事。<br/>2.RewriteCond指令，定义生效条件，用于寻找匹配条件的地址。后面内容用正则表达式匹配。代表含义是发送的请求不由mysite.com而来，那就是盗链啦。末尾的[NC]代表忽略大小写。<br/>3.发送请求的主机前缀不为空。<br/>4.RewriteRule指令，定义重写规则，把匹配的地址按此规则重写。本例中把这些后缀为这些图片格式的，都替换到某一个图片下。[L]表示这是最后一段规则。<br/>只这四行就实现了防盗链是不是很神奇（- -&#124;&#124;），编写起来是不是又觉得复杂。<br/>这里总结了几个常用参数（不是全部）：<br/>RewriteCond下：<br/>[NC] 不分字母大小写<br/>[OR] 用于连接下一条规则<br/>RewriteRule下：<br/>[R] 强制重定向，[R=code] code默认为302<br/>[F] 禁用URL，返回HTTP 403 错误<br/>[L] 这是最后一条规则，之后内容无用<br/>还有一篇关于正则表达式的教程（很详细）：<a href="http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm" target="_blank">http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm</a><br/><br/>二、网址规范化<br/><div class="code"><br/>Options +FollowSymLinks<br/>rewriteEngine on<br/>rewriteCond %&#123;http_host&#125; ^yourdomain.com &#91;NC&#93;<br/>rewriteRule ^(.*)$ http://www.yourdomain.com/$1 &#91;R=301,L&#93; </div><br/>这个是把所有二级域名都重定向到<a href="http://www.yourdomain.com" target="_blank">www.yourdomain.com</a>的例子，现在看来是不是很简单了？<br/>需要注意的是，这里的Options +FollowSymLinks不是必须的，但在某些服务器如果不设置FollowSymLinks，可能引起500错误。<br/>再来看一个好玩的重定向<br/><div class="code"><br/>RewriteEngine On<br/>RewriteBase /<br/>RewriteCond %&#123;HTTP_USER_AGENT&#125; (Googlebot)<br/>RewriteRule ^ http://abc.com/ &#91;R=301,L&#93; </div><br/>1.打开Rewrite功能。<br/>2.RewriteBase指令，设置目录级重写的基准URL。可以理解成把该目录（这个.htaccess所在目录）假定为基准的URL前缀。本例中这样的写法无用。<br/>3.RewriteCond指令。匹配所有USER_AGENT为Googlebot的发送请求。<br/>4.RewriteRule指令。本例中把这些请求都重定向到了abc.com。<br/>在本例中，这个配置应该是黑客所为，把google蜘蛛指向某个网站，等于伪造PR。<br/><br/>三、临时错误页面<br/>当你的网站在升级、修改的时候，你最好让访客转到指定的页面，而不是没做完的页面或者是错误页。<br/>这时我们做一个302转跳就好。<br/><div class="code"><br/>RewriteEngine on<br/>RewriteCond %&#123;REQUEST_URI&#125; !/maintenance.html$<br/>RewriteCond %&#123;REMOTE_ADDR&#125; !^123.123.123.123<br/>RewriteRule $ /error.html &#91;R=302,L&#93; </div><br/>1.继续打开Rewrite功能。- -&#124;<br/>2.REQUEST_URI，请求的URL值。这里指所有访问maintenance.html页面的请求。<br/>3.REMOTE_ADDR，向服务器发送请求的IP地址。本例中此处应设为你自己的IP，这样就只有你能访问。<br/>4.RewriteRule指令。本例中把这些请求都重定向到了error.html 。<br/>在本例，我们总结几个常用的正则表达式和特殊符号。<br/>(.*) 用于匹配某一区域内所有内容。如 abc/def/ghi 可用 (.*)/(.*)/(.*) 匹配。<br/>([a-zA-Z_]+) 匹配英文单词，允许用-和_连接。<br/>([0-9]+) 匹配多位数字，通常用于匹配ID。<br/>([0-9]) 只匹配一位的数字。<br/>^ 表示正则的开始<br/>$ 表示正则的结束 <br/><br/>四、重定向RSS地址到Feedburner<br/>除了可以更改模板里的RSS地址外，.htaccess也能实现RSS地址的更改，并更加方便。<br/><div class="code"><br/>RewriteEngine on<br/>RewriteCond %&#123;HTTP_USER_AGENT&#125; !FeedBurner&nbsp;&nbsp;&nbsp;&nbsp;&#91;NC&#93;<br/>RewriteCond %&#123;HTTP_USER_AGENT&#125; !FeedValidator &#91;NC&#93;<br/>RewriteRule ^feed/?(&#91;_0-9a-z-&#93;+)?/?$ http://feeds2.feedburner.com/yourname &#91;R=302,NC,L&#93; </div><br/><br/>有了上面的总结，本例其实就很简单了吧。<br/>唯一要注意的是这样操作要确保填写正确的HTTP_USER_AGENT。其实你不常换模板的话。。可能还是直接改模板更省事。<br/>在最后，为懒虫们推荐几个好东东：<br/>在线.htaccess生成器：htaccessEditor<br/>在线正则表达式检查器：<a href="http://www.sman.cn/Blog/attachments/month_0711/320071117123354.html" target="_blank">http://www.sman.cn/Blog/attachments/month_0711/320071117123354.html</a><br/>mod_rewrite模块中文参考手册：<a href="http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/mod/mod_rewrite.html" target="_blank">http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/mod/mod_rewrite.html</a><br/><br/>原文链接：<a href="http://www.suoyishuo.com/archives/how-to-write-htaccess-rewrite.html" target="_blank">http://www.suoyishuo.com/archives/how-to-write-htaccess-rewrite.html</a><br/><br/></span></span><br/>Tags - <a href="https://www.cnmysql.com/tags/rewrite/" rel="tag">rewrite</a> , <a href="https://www.cnmysql.com/tags/rewriterule/" rel="tag">rewriterule</a>
]]>
</description>
</item><item>
<link>https://www.cnmysql.com/post//#blogcomment</link>
<title><![CDATA[[评论] 四个例子实战讲解.htaccess文件rewrite规则]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.cnmysql.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>