我就说嘛,每一个挫折都是进步的阶梯,今天网站搬家,遇到了很严重的“404”问题,主页正常显示,进入文章页面就404。听朋友说和.htaccess文件有关,于是就了解了一下,很丰富,就转载了,其实最后不是靠.htaccess文件解决的。

“记得第一次看到看到.htaccess这个文件的时候感觉很诡异。在Apache环境中.htaccess文件对做好seo工作也是必不可少的。可以用过Apache的AllowOverride指令来对其进行设置,但是只有管理员才有这个权限,作为普通用户能使用的命令并不多只能通过此文件间接的配置Apache。

.htaccess文件的基本规则和作用如下: 一、设置默认首页文件 一般默认的首页文件名是default、index等。但是有时候我们要增加或者改变首页默认文件。 在.htaccess中可以很方便的设置首页默认文件: 用DirectoryIndex filename进行设置。例如DirectoryIndex filename .html index.cgi index.pl default.htm 【注】:依照上面的顺序,从左到右,优先等级一次降低。

二、对** URL****地址进行转向** 当网站改版变更域名后,url地址发生了变化,从搜索引擎或者其他网站链接过来的访问就会出错。此时我们可通过.htaccess的redirect指令来完成从旧URL到新URL的自动跳转 。具体操作如下: 1、Redirect /旧目录/旧文档名 新文档的地址 2、整个目录的转向: Redirect 旧目录 新目录

三、 重定向错误页面 很多网站为了使网站友好制定了专用的错误提醒页面。用.htaccess就能实现把浏览网站时返回的不同错误指向相应的错误提醒页面。例如:我们创建一个专门用来存放错误提醒页面的目录“errors“,则可用下面语句指向提醒页: ErrorDocument 错误代码 /目录名/文件名.扩展名 ErrorDocument 404 /errors/notfound.html ErrorDocument 500 /errors/internalerror.html  (意思是说遇到500错误是显示internalerror.html页面) 如果不想制作个性的错误提醒页面,就直接在语句中使用HTML号了。如: ErrorDocument 401 ” ,当遇到401错误会显示默认的”你没有权限访问该页面,请放弃!”这几个字。 下面是常用的客户端请求错误返回代码: 401 Authorization Required 403 Forbidden 404 Not Found 405 Method Not Allowed 408 Request Timed Out 411 Content Length Required 412 Precondition Failed 413 Request Entity Too Long 414 Request URI Too Long 415 Unsupported Media Type 下面是常见的服务器错误返回代码: 500 Internal Server Error

四、 防盗链 用.htaccess的指令可以实现防止自己网站的图片、文档被盗链。 可以使用下面语句: RewriteEngine on RewriteCond % !^$ RewriteCond % !^http://(www.)?mydomain.com$ RewriteRule .(gif|jpg)$ – 如果用下面代码,当别人盗链你的图片时,会显示你设置的图片: RewriteEngine on RewriteCond % !^$ RewriteCond % !^http://(www.)?mydomain.com$ RewriteRule .(gif|jpg)$ http://www.mydomain.com/替代图片文件名       /别人盗链你图片时你想显示的图片路径/ source:http://wsabstract.com/howt…

五、用. Htaccess对网址进行规范

网址规范化在SEO中是一个很重要的环节,网址的不规范,不仅能造成复制,还可能造成权重不集中的现象,影响排名。现在大多数网站,绑定域名都有带WWW和不带两个版本,甚至很多网站同时绑定多个域名。经过处理(跳转、CNAME……),对于访问者来说可能没有任何影响,看到的都是同样的内容;但对于搜索引擎,就无法确定哪一个网址是真正的主页。可控因素,网站内容链接应该保持同一个版本,比如整站中,返回首页的地址为固定的一个版本。但还有一个不可控的因素,就是别人链到你的网站,所使用的网址。很多自发链接或交换链接时,别人可能会省略掉WWW,或采用绑定的另一域名。外界因素不可控,我们可以从网站内部来控制。

利用Apache的.htaccess,使用301****重定向,规范网址。 用301将不带WWW的域名重定向 rewriteEngine on rewriteCond % ^seo84.com rewriteRule ^(.*)$ http://www.seo84.com/$1 需要mod_rewrite模块 例1. 阻止单一referrer: badsite.com RewriteEngine on

Options +FollowSymlinks

RewriteCond % seo4.com RewriteRule .* – 例2. 阻止多个referrer: badsite1.com, badsite2.com RewriteEngine on

Options +FollowSymlinks

RewriteCond % seo841.com RewriteCond % seo842.com RewriteRule .* – – 大小写不敏感(Case-insensite) – 403 Forbidden注意以上代码注释掉了”Options +FollowSymlinks”这个语句。如果服务器未在 httpd.conf 的 段落设置 FollowSymLinks, 则需要加上这句,否则会得到”500 Internal Server error”错误。 Blocking bad bots and site rippers (aka offline browsers) 阻止坏爬虫和离线浏览器 需要mod_rewrite模块

用301将绑定的其他多个域名重定向到主域名 RewriteEngine on RewriteCond % ^seo84.com$ RewriteCond % ^bbs.seo84.com$ RewriteCond % ^inseo.cn$ RewriteCond % ^www.inseo.cn$ RewriteCond % ^bbs.inse.cn$ RewriteRule ^(.*)$ http://www.seo84.com/$1

也可以再扩展一下,将index.html、index.php等也重定向一下: RewriteEngine on RewriteCond % ^{3,9} /index.php HTTP/ RewriteRule ^index.php$http://www.seo84.com/ Enabling SSI Via htaccess 通过htaccess允许SSI(Server Side Including)功能 AddType text/html .shtml AddHandler server-parsed .shtml Options Indexes FollowSymLinks Includes DirectoryIndex index.shtml index.html Blocking users/sites by referrer 根据referrer阻止用户/站点访问

**. **文档访问的密码保护 文档访问的密码保护

要用.htaccess对某个目录下的文档设定访问用户和密码,首先要生成一个名为“.htpasswd”的授权用户文档,.htpasswd文档的内容事例: zheng:y4E7Ep8e7EYV .这里的密码经过加密的,你可以找工具将密码加密成.htaccess支持的编码。为了安全些,建议此文档不放在www目录,而是放在www根目录之外。 1、有了授权用户文档,便可以在.htaccess使用下面语句(括号中的内如是对签名语句的解释说明,不能复制到.htaccess文件中): AuthUserFile  (.htpasswd的服务器目录 ) AuthGroupFile /dev/null (需授权访问的目录) AuthName EnterPassword AuthType Basic (授权类型) require user wsabstract (允许访问的用户,如果希望表中所有用户都允许,可以使用 require valid-user) 2、拒绝来自某个IP的访问 如果我不想某个政府部门访问到我的站点的内容,那可以通过.htaccess中加入该部门的IP而将它们拒绝在外。 例如: 注意:下面示例的IP也可以换成域名。 order allow,deny deny from 210.10.56.32  (第二行拒绝某个IP) deny from 219.5.45.  (第三行拒绝某个IP段) allow from all  (想要拒绝所有) 3、保护.htaccess文档 用.htaccess设置目录的密码保护时,它包含了密码文件的路径。从安全考虑.htaccess也应该被保护。用.htaccess下面的语句就能实现: order allow,deny deny from all 对于.htaccess文件的保护,除上面的方法外,还可设置文档的权限来保护。

七、 阻止不想要的蜘蛛爬虫** 当然我们要组织的是坏爬虫?或者我们不要要的蜘蛛爬虫 **比如:抓垃圾email地址的爬虫以及不遵守robots.txt规则的爬虫。** 但有些搜索引擎把自己的agent设置为 “Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)” ,对这种蜘蛛就无能为力了。 *可用 HTTP_USER_AGENT 来判断它们 RewriteEngine On RewriteCond % ^BlackWidow RewriteCond % ^Bot mailto:lg4101622@gmail.com RewriteCond % ^ChinaClaw RewriteCond % ^Custo RewriteCond % ^DISCo RewriteCond % ^Download Demon RewriteCond % ^eCatch RewriteCond % ^EirGrabber RewriteCond % ^EmailSiphon RewriteCond % ^EmailWolf RewriteCond % ^Express WebPictures RewriteCond % ^ExtractorPro RewriteCond % ^EyeNetIE RewriteCond % ^FlashGet RewriteCond % ^GetRight RewriteCond % ^GetWeb! RewriteCond % ^Go!Zilla RewriteCond % ^Go-Ahead-Got-It RewriteCond % ^GrabNet RewriteCond % ^Grafula RewriteCond % ^HMView RewriteCond % HTTrack RewriteCond % ^Image Stripper RewriteCond % ^Image Sucker RewriteCond % Indy Library RewriteCond % ^InterGET RewriteCond % ^Internet Ninja RewriteCond % ^JetCar RewriteCond % ^JOC Web Spider RewriteCond % ^larbin RewriteCond % ^LeechFTP RewriteCond % ^Mass Downloader RewriteCond % ^MIDown tool RewriteCond % ^Mister PiX RewriteCond % ^Navroad RewriteCond % ^NearSite RewriteCond % ^NetAnts RewriteCond % ^NetSpider RewriteCond % ^Net Vampire RewriteCond % ^NetZIP RewriteCond % ^Octopus RewriteCond % ^Offline Explorer RewriteCond % ^Offline Navigator RewriteCond % ^PageGrabber RewriteCond % ^Papa Foto RewriteCond % ^pavuk RewriteCond % ^pcBrowser RewriteCond % ^RealDownload RewriteCond % ^ReGet RewriteCond % ^SiteSnagger RewriteCond % ^SmartDownload RewriteCond % ^SuperBot RewriteCond % ^SuperHTTP RewriteCond % ^Surfbot RewriteCond % ^tAkeOut RewriteCond % ^Teleport Pro RewriteCond % ^VoidEYE RewriteCond % ^Web Image Collector RewriteCond % ^Web Sucker RewriteCond % ^WebAuto RewriteCond % ^WebCopier RewriteCond % ^WebFetch RewriteCond % ^WebGo IS RewriteCond % ^WebLeacher RewriteCond % ^WebReaper RewriteCond % ^WebSauger RewriteCond % ^Website eXtractor RewriteCond % ^Website Quester RewriteCond % ^WebStripper RewriteCond % ^WebWhacker RewriteCond % ^WebZIP RewriteCond % ^Wget RewriteCond % ^Widow RewriteCond % ^WWWOFFLE RewriteCond % ^Xaldon WebSpider RewriteCond % ^Zeus RewriteRule ^. – 其中:表示:403 Forbidden                          表示:连接(Link)

八、用.htaccess文件实现PR劫持 PR劫持其实就是通过.htaccess文件来配置Apache服务器实现301重定向,用下面的语句即可实现: Redirect permanent / http://youname.com/ redirect permanent /default.php http://youname.com/juyo/tech 第一句的作用是将目录下内容重定向到http://youname.com/ 第二句作用是将网页default.php重定向到http://youname.com/juyo/tech/

九、注意事项: 1、新建个一个txt文档,把要修改的内如复制到文档里面保存 2.、.htaccess文件必须以ASCII模式上传,其权限最好设置为644。 3、要把.htaccess文件上传到网站的根目录。 4、在ftp上将txt文档重命名为“.htaccess”,就是把txt文档的后缀“txt”改成htaccess,然后把“.”前面的内容删除。 说说为什么要上传后在重命名为.htaccess,因为很多人在本地市无法修改成.htaccess形式的,window不容许文件名为空哦。