Apache配置301跳转和开启.htaccess的方法

时间:2022-11-09 17:53:54

近期由于系统需要配置301跳转,研究实施之余便整理了此篇文档,希望对需要的朋友有用。
配置步骤如下:
一、开启.htaccess文件
apache的conf文件中,打开httpd.conf

1、把文档中所有的AllowOverride None全部的都给换成AllowOverride All
2、去掉下面的注释
LoadModule rewrite_module modules/mod_rewrite.so

二、htaccess 写法
1、Apache中的.htaccess是放在工程的根目录(www)中,而且在文件的权限还有一定的要求,所以像在linux和unix中的的时候,要设置相关权限,一般把.htaccess必需以ASCII模式上传,最好将其权限设置为644。
.htaccess文件内容如下:
多域名301跳转跳转到统一域名下的:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^PiaoYun1.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^www.PiaoYun1.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^PiaoYun2.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^www.PiaoYun2.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^PiaoYun3.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^www.PiaoYun3.CC [NC,OR]
RewriteCond %{HTTP_HOST} ^PiaoYun.CC [NC]
RewriteRule ^(.*)$ http://www.PiaoYun.CC/$1 [L,R=301]
这些地址就会都以301重定向的方式跳转到 [L,R=301]
这些地址就会都以301重定向的方式跳转到http://www.PiaoYun.CC
以这样的方式重定向,GOOGLE会自动传递PR值到http://www.PiaoYun.CC这个地址上,避免了同一网站多个域名分散权重的情况,这也是我们对网站SEO需要注意的问题。

某一栏目301跳转:
RewriteCond %{REQUEST_URI} ^/kangle/
RewriteRule ^kangle/(.*) http://kangle.puercn.com/$1 [R=permanent,L]

RewriteCond %{REQUEST_URI} ^/puerchanews/open/ [NC]
RewriteRule ^/puerchanews/open/(.*) http://www.puercn.com/puerchanews/open/$1 [R=301,L]

1)将不带WWW的域名转向到带WWW的域名下:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^PiaoYun.CC[NC]
RewriteRule ^(.*)$ http://www.PiaoYun.CC/$1 [L,R=301]
非WWW的域名转向到带WWW的域名
RewriteCond %{HTTP_HOST} !^www.PiaoYun.CC [NC]

2)重定向到新域名:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ http://www.PiaoYun.CC/$1 [L,R=301]

3)使用正则进行301重定向,实现伪静态:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^news-(.+)\.html$ news.php?id=$1
将news.php?id=456这样的地址转向到news-456.html

4)二级域名指向指目录 如将cn.PiaoYun.CC指向 /zh_cn子目录
RewriteCond %{HTTP_HOST} ^cn.PiaoYun.CC [NC]
RewriteRule ^(.*) /zh_cn

Apache下vhosts.conf中配置301重定向
为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置为:

12345678 <VirtualHost *:80>ServerName Www.PiaoYun.CCDocumentRoot /home/PiaoYun.CC</VirtualHost><VirtualHost *:80>ServerName PiaoYun.CCRedirectMatch permanent ^/(.*) http://Www.PiaoYun.CC/$1</VirtualHost>

2、错误文档的定位
2.1常用的客户端请求错误返回代码:
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

2.2利用.htaccess指定事先制作好的错误提醒页面。一般下,人们专门设立目录,例如errors放置页面。然后再.htaccess中,需要编写如下的指令:
ErrorDocument 404 /errors/notfound.html (命令[ErrorDocument],错误数,对应的界面)
ErrorDocument 500 /errors/internalerror.html
注意:一条指令一行。上述第一条指令的意思是对于404,也找到所的文档的得显示页面为/errors目录下的notfound.html页面。不难看出语法格局为:
ErrorDocument 错误代码 /目录名/名.扩展名

3、文档访问的密码保护
要利用.htaccess对某个目录下的文档设定访问和对应的密码,首先要做的是生成.htpasswd的文本文档,例如:
zheng:y4E7Ep8e7EYV
这里密码经由加密,找些工具将密码加密成.htaccess的编码。该文档最好不要放在工程的根目录下,建议放在工程根目录文档之外,这样更为安全些。
有了授权文档,在.htaccess中加入如下指令了:
AuthUserFile .htpasswd的器目录
AuthGroupFile /dev/null (授权访问的目录)
AuthName EnterPassword
AuthType Basic (授权类型)
require user wsabstract (允许访问的,但愿表中都允许,require valid-user)
注,括号部门为学习添加的注释

4、拒绝来自某个IP的访问
我不想某个IP访问到站点的,那.htaccess中加入该IP而将它们拒绝在外。
例如:
order allow,deny
deny from 210.10.56.32
deny from 219.5.45.
allow from all
第一行开启如许和拒绝的功能,第二行拒绝某个IP,第三行拒绝某个IP段,也219.5.45.0~219.2.45.255
想要拒绝人?用deny from all好了。不止用IP,也用域名来设定。

5、保护.htaccess文档
在.htaccess来设置目录的密码保护时,它包含了密码的路径。从安全考虑,有必要把.htaccess也保护起来,不让别人看到其中的。虽然用其他做到这点,好比文档的权限。不外,.htaccess本身也能做到,只需加入如下的指令:

order allow,deny
deny from all

12345 #下面的代码保护.htaccess不被下载<Files~^.htaccess>Orderallow,denyDenyfromall</Files>

6、URL转向

6.1:可能对重新规划,将文档了迁移,或者更改了目录。这,来自搜索引擎或者其他链接过来的访问就可能犯错。这种下,如下指令来完成旧的URL自动转向到新的:
Redirect /旧目录/旧文档名 新文档的
或者整个目录的转向:
Redirect 旧目录新目录
6.2:改变缺省的首页
一般下缺省的首页名有default、index等。不外,有些目录中没出缺省,而是某个特定的名,好比在pmwiki中是 pmwiki.php。这种下,要记住名来访问很麻烦。在.htaccess中等闲的设置新的缺省名:
DirectoryIndex 新的缺省名
也列出多个,顺序表明它们之间的优先级别,例如:
DirectoryIndex filename.html index.cgi index.pl default.htm

6.3:防止盗链(界面跳转或301,302跳转)
不喜欢别人在的网页上连接的、文档的话,也htaccess的指令来做到。
所的指令如下:
RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www.)?PiaoYun.CC/.*$ [NC]
RewriteRule .(gif&line;jpg)$ http://Www.PiaoYun.CC/替代名 [R,L]
此处的配置是正则表达式的形式来实现了!