Apache下htaccess使用技巧:301重定向、404错误等

合集下载

Apache下利用 .htaccess设置多个域名301跳转

Apache下利用 .htaccess设置多个域名301跳转

Apache下利用 .htaccess设置多个域名301跳转本文摘自:/boke/post-171.html用.htaccess实现网址规范化网址规范化在SEO中是一个比较重要的环节,同时存在不同的网址版本,不但可能造成复制,还不能正确的集中权重。

目前大多数网站,绑定域名都有带WWW和不带两个版本,甚至很多网站同时绑定多个域名。

经过处理(跳转、CNAME),对于访问者网址规范化在SEO中是一个比较重要的环节,同时存在不同的网址版本,不但可能造成复制,还不能正确的集中权重。

目前大多数网站,绑定域名都有带WWW和不带两个版本,甚至很多网站同时绑定多个域名。

经过处理(跳转、CNAME……),对于访问者来说可能没有任何影响,看到的都是同样的内容;但对于搜索引擎,就无法确定哪一个网址是真正的主页。

可控因素,网站内容链接应该保持同一个版本,比如整站中,返回首页的地址为固定的一个版本。

但还有一个不可控的因素,就是别人链到你的网站,所使用的网址。

很多自发链接或交换链接时,别人可能会省略掉WWW,或采用绑定的另一域名。

外界因素不可控,我们可以从网站内部来控制。

利用Apache的.htaccess,使用301重定向,规范网址。

新建一个空文件,文件名.htaccess,填入重定向规则后,上传到网站根目录。

用301将不带WWW的域名重定向rewriteEngine onrewriteCond %{http_host} ^ [NC]rewriteRule ^(.*)$ /$1 [R=301,L]用301将绑定的其他多个域名重定向到主域名RewriteEngine onRewriteCond %{HTTP_HOST} ^$ [OR]RewriteCond %{HTTP_HOST} ^$ [OR]RewriteCond %{HTTP_HOST} ^$ [OR]RewriteCond %{HTTP_HOST} ^$ [OR]RewriteCond %{HTTP_HOST} ^$RewriteRule ^(.*)$ /$1 [R=301,L]当然,也可以再扩展一下,将index.html、index.php等也重定向一下:RewriteEngine onRewriteCond %{THE_REQUEST} ^[A-Z]{3,9}/ /index/.php/ HTTP/ RewriteRule ^index/.php$ / [R=301,L]。

apache配置301重定向

apache配置301重定向
向状态码(302),这是默认值。
seeother
返回一个"参见"状态码(303),表示此资源已经被替代。
gone
返回一个"已废弃"状态码(410),表示此资源已经被永久性地删除了。如果指定了这个状态码,则URL参数将被忽略。
举例:
APACHE http-vhosts.conf配置文件,添加301重定向代码
Redirect 301 /old/old.htm /new.htm #/old/old.htm重定向到new.htm
Redirect permanent /one /two #同上,permanent指令表示返回永久性重定向状态码301
如需配置大量的虚拟域名,则可写成:* IN CNAME .
这样就可将所有未设置的以结尾的记录全部重定向到上。
Redirect [status] URL-path URL
RedirectMatch [status] regex URL
status参数可以使用以下HTTP状态码:
permanent
返回一个永久性重定向状态码(301),表示此资源的位置变动是永久性的。
temp
绑定/本地DNS(域名别名跳转)
如果具有对本地DNS记录进行编辑修改的权限,则只要添加一个记录就可以解决此问题。
若无此权限,则可要求网站托管服务商对DNS服务器进行相应设置。
DNS服务器的设置
若要将指向,则只需在DNS服务中应增加一个别名记录,可写成:aaa IN CNAME 。
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain\.com [NC]

apache301跳转规则

apache301跳转规则

apache301跳转规则
Apache 301 跳转规则是一种重定向机制,用于将一个 URL 永
久重定向到另一个 URL。

这可以通过修改 Apache 服务器的配
置文件中的 `.htaccess` 文件来实现。

以下是一个示例的 Apache 301 跳转规则的语法:
```
RewriteEngine On
RewriteRule ^old-url$ /new-url [R=301,L]
```
上述规则的含义是,当用户访问 `old-url` 时,服务器会将请求
重定向到 `new-url` 并返回 301 状态码,表示永久移动。

`[R=301,L]` 是可选的参数,其中 `R=301` 指定了重定向的类
型为 301,`L` 表示这是最后一个规则,也就是说,如果匹配
到该规则后,将不再尝试匹配其他规则。

你可以根据自己的需求修改 `old-url` 和 `new-url` 的值,以满
足具体的跳转需求。

如果需要多条跳转规则,可以使用多个`RewriteRule` 来实现。

例如:
```
RewriteEngine On
RewriteRule ^old-url1$ /new-url1 [R=301,L]
RewriteRule ^old-url2$ /new-url2 [R=301,L]
```
上述规则会将 `old-url1` 重定向到 `new-url1`,将 `old-url2` 重定向到 `new-url2`。

请注意,修改 `.htaccess` 文件前,请确保你拥有访问服务器的正确权限,并备份配置文件以防止意外情况。

404错误到底能否通过301重定向解决

404错误到底能否通过301重定向解决
笔者于6月25日发表了一篇《巧用301重定向将404错误转化为网站外链》的文章,谈了一下如何通过301重定向的方式,将从外部得到错误URL转化为可访问的URL,从而达到传递权重的文章。
 
今天在A5看到了一篇《浅谈利用301重定向将404页面转移成自己外链的危害》,反驳了我之前那篇文章中的观点。我觉得非常好,SEO行业正应该有这种质疑的精神和独立思考的能力。仔细拜读了文章,发现作者误解了我的意思。所以再写一篇文章澄清一下其中的观点,以及介绍一下301重定向的作用。首先我明确两个在《使用301重定向将404错误转化为网站外链》一文中的思路:
首先,对于“自身行为”还是“外部行为”,显然搜索引擎有着明确的区分。拿链接建设来说,内链和外链在权重方面的效果是不同的。这点大家都很清楚。其核心思想就是外链是网站站长无法控制的,而内链是站长可以自行设置的。虽然在搜索引擎的发展过程中,出现“可被站长控制的外链”这一因素(就是平常的外链建设)。但无论可控还是不可控,有一个思想是明确的,即谁也不会在别人的网站可以发布正确URL的前提下,却去发错误的URL,导致用户无法正常访问自己的网站或在自己的网站上出现“该网页不存在”的字眼。
文章所讲述的是将404错误URL,通过301重定向回到原文的URL。这点需要说明,我没有在文章提到任何301到首页或者其他页面的意思,文章中的例子,讲述的是从外部(B网站)链入自身网站(A网站),在过程中有可能出现的URL错误拼写、链接添加错误甚至故意产生错误URL的行为。而不是A网站自身出现的404错误。
网站出现404错误,不一定是网站内部程序的问题。蜘蛛通过外部网站(以B网站为例)一个错误的URL爬行到自身网站(以A网站为例),同样会造成404错误,即:错误的URL导致了错误的页面。蜘蛛是不会管你链接URL存在于网站内部还是外部,只要在顺着URL爬行的过程中出现了“页面不存在”的情况,就会记录一个404错误。

htaccess 高级规则

htaccess 高级规则

htaccess 高级规则在.htaccess文件中,你可以使用一些高级规则来定制你的网站的行为。

以下是一些常见的.htaccess高级规则:1. 错误处理:使用ErrorDocument指令来指定错误页面。

例如,当访问不存在的页面时,可以重定向到自定义的404错误页面。

2. 重定向:使用Redirect或RedirectMatch指令来实现页面或URL的重定向。

这可以帮助你更改网站的URL结构或将旧URL重定向到新URL。

3. 访问控制:使用Order和Allow/Deny指令来限制对特定目录或文件的访问。

你可以根据IP地址、用户代理或请求方法来允许或拒绝访问。

4. 内容过滤:使用AddType和AddHandler指令来指定文件类型和请求的处理程序。

这可以帮助你控制对特定文件类型的访问,例如禁止直接访问PHP文件。

5. 缓存控制:使用Expires和Cache-Control指令来控制页面缓存。

这可以提高网站的加载速度并减少服务器负载。

6. 自定义头部:使用Header指令来设置自定义头部信息,例如设置响应头、设置CORS策略等。

7. 限制请求方法:使用Limit指令来限制对特定目录或文件的请求方法。

例如,只允许GET和POST请求访问某个目录。

8. 防盗链:使用RewriteRule和Header指令来防止其他网站盗链你的资源。

这可以通过检查请求的Referer头来实现。

这些只是.htaccess高级规则的一部分,具体规则取决于你的需求和网站的情况。

在编写规则时,请注意测试和验证规则以确保它们按预期工作,并注意不要过度限制或混淆用户的访问权限。

Apache下htaccess的配置使用详解(原创亲测)

Apache下htaccess的配置使用详解(原创亲测)

Apache 下 htaccess 的配置使用详解(原创亲测) 的配置使用详解(原创亲测) 看到群里很多前辈都在讨论.htaccess 的用法,自己之前也小用过, 只做了 404 的重定向,当然.htaccess 的功能远不止这些,他还可以帮助我们做很多(比如: 自定义错误页面,禁止目录被浏览,地址重定向,目录保护,改变默认首页索引, 防止网站图片盗链 等).今天我在本地 localhost 将 apache 下 htaccess 做了详 细的整理和测试. 为什么要使用.htaccess? 为什么要使用 答:很多网站都是租用服务器和虚拟主机的,其服务器的配置 我们并不能改.当我们有特殊要求时,比如定义最简单的 404(页面未找到)的错 误页面,我们就只能通过 apache 配置的扩展配置(或者说是子配置)来更改扩展 原服务器的配置. 这个配置就是.htaccess 文件, 他想但与 apache 下的 http.conf 文件的延续. 使用.htaccess 的条件 使用 答:要在服务器上使用.htaccess 文件配置,必须要求服务器 开通对于的支持.两个条件:1.mod_rewrite 模块开启;2. AllowOverride All 要使用.htaccess,apache 下 http.conf 该如何配置 , 要使用 答:很简单,只需要改两个地方: 1. 将工作目录下的 AllowOverride None 改为 AllowOverride All. 具体位置 为你可以在 http.conf 下搜索 AllowOverride controls what directives may be placed in .htaccess files. 该句下面的那个 AllowOverride 就是 要改的位置. 2. 开启.mod_rewrite 模块.将#LoadModule rewrite_module modules/mod_rewrite.so 前的#去掉即可..htaccess 实现各种功能的配置写法自定义错误页面 配置解答:写法:ErrorDocument 错误代码空格/目录名/文件名.扩展名例子:ErrorDocument 404 /404.html ErrorDocument 500 /help/errors/internalerror.html这样当文件未找到(404)或者服务器错误(500)时就会自动跳转至写好的提示页, 有助于网站的用户体验.至少不会显示浏览器默认的提示信息,也可以防止服务器 的信息泄露,既安全又友好.禁止/允许目录被浏览 禁止 允许目录被浏览 配置解答:写法:IndexIgnore */*很多服务器本身就已经禁止了目录被浏览并会提示.如果你在建站初 期调试,想要开通此功能也未尝不可.只需要添加一句:写法: Options +Indexes页面或网址重定向 配置解答:写法 1:Redirect permanent [old directory or file name][空 格][new directory or file name]其中 permanent(永久)是为了告诉搜索引擎,老的链接已经移到新链接了.写法 2:Redirect /旧页面地址[空格]新页面的地址 例子: Redirect permanent /oldhtmlfile.htm /newhtmlfile.htm这可以帮助我们将用户引导到我们想让其看到的页面,也可以用作域名的重定向. 有时候某些目录我们不想对用户开放,比如 cache 目录禁止用户直接输入地址访 问,我们就可以用 htaccess 的重定向配置将其直接带到首页.改变默认首页索引页 配置解答:写法: DirectoryIndex homepage.htm DirectoryIndex somepage.htm多个文件名之间可以用空格隔开,这样就会按顺序将所有列出的文件列为可能的索 引文件, 记住,每一个入口只能写在一行.DirectoryIndex homapage.html somepage.html myindexpage.html anything.html防止网页图片被盗连 配置解答:很多服务器供应商都是限流量和限 cpu 的.特别是流量,每个月超过了限制的流量 就需要支付额外的大洋,而自己网站的图片被盗链这就相当于别人耗了你的流量却 并没有给你带来流量.那是相当郁闷的.自然要防止被盗连.同时有些隐私比如用 户的相册如果被盗连了可能泄露隐私,这也是不好的.你可以看到百度空间,sina 博客,qq 空间均作了防盗链的处理.写法: RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?your-domain. com/.*$ [NC] RewriteRule .(gif|jpg)$ - [F]在上面的代码中,将[your-domain]用你真实的域名代替[没有 www],对于 (www.\),用实际的子域名代替(sub-domain.\).或者用图片代替之,这样别人盗链的图片就会显示你所要提示的图片. RewriteEngine on RewriteCond % !^$ RewriteCond % !^http://(www/.)?域名.com/.*$ [NC] RewriteRule /.(gif|jpg)$ http://www.域名.com/替代图片文件名 [R,L]使用.htaccess 文件的不足 使用1,性能 AllowOverride 启用了使用.htaccess 文件,则 apache 需要在每个目录 中查找.htaccess 文件.因此会导致性能下降.另外对每一个请求,都需要读取一 次.htaccess 文件,还有 apache 必须在所有上级的目录中查找.htaccess 文件以使有效的指令都起作用,比如如果客户端请求/www/htdocs/help 中的页面.服务 器必须查找 /.htaccess /www/.htaccess /www/htdocs/.htaccess /www/htdocs/help/.htaccess 四个额外文件 (即使这些文件都不存在, 当然你可以仅仅允许根目录使用.htaccess 文件),也就是说目录深度越深,则访问的额外文件越多,性能越低了. 2,安全 由于在/www/htdocs/help 下面的.htaccess 文件中放置指令与在主配置文件中 <Directory /www/htdocs/help>中放置相同的指令是完全等效的,这样允许用 户自己修改服务器配置, 可能就会导致某些不愿意发生的意想不到的修改,这样就会造成服务器安全问题. 这样你就必须考虑是否设置 AllowOverride None 来完全禁用.htaccess 文件. 原创,转载请注明。

Apache服务器301重定向详解

Apache服务器301重定向详解

Apache服务器301重定向详解301重定向(301 redirect)又叫301代表永久性转移(Permanently Moved),将各种网络请求重新定个方向转到其它位置,是网页更改地址后对搜索引擎友好的最好方法,只要不是暂时搬移的情况,都建议使用301来做转址。

下面说下两种情况下的301重定向方法。

一、WWW域名的重定向。

这是我们大多数站长建站后都会面对的一种情况。

那么如何做呢?将不带www重定向带www的地址,以和请看如下代码:<Files ~ "^.(htaccess|htpasswd)$">deny from all</Files>RewriteEngine onRewriteCond %{HTTP_HOST} ^(baidu\.com)(:80)? [NC]RewriteRule ^(.*) /$1 [R=301,L]order deny,allow如果是将带www的定向到不带www的情况,写法和上面差不多,就不多说了。

将上面代码复制到记事本,然后重命名为.htaccess,上传到网站的根目录即可。

如果是本地不支持此命名,可以先传到根目录再修改文件名称即可。

二、网页的重定向。

这里也可以分为两种情况。

第1种,只有少量网页需要重定向,方法如下:<Files ~ "^.(htaccess|htpasswd)$">deny from all</Files>Redirect permanent /old.html /new.htmlorder deny,allow第2种,举例网站的导航的一个栏目改了路径时的重定向方法。

原路径为/old/,新路径为/news/的情况如下:<Files ~ "^.(htaccess|htpasswd)$">deny from all</Files>Redirect permanent /old/ /new/order deny,allow同样,写在记事本,改名为.htaccess,同样上传到网站根目录即可。

301重定向请求流程

301重定向请求流程

301重定向请求流程在网站开发过程中,经常会遇到需要更改网站页面的情况。

这时候,我们需要在保证用户访问体验的同时,将旧页面的权重和排名转移到新页面上。

这个过程就是通过301重定向来实现的。

301重定向是一种HTTP协议的状态码,它告诉搜索引擎和用户请求的页面已经移动到了新的URL地址。

这个状态码是永久性重定向,意味着搜索引擎会更新它们的索引,把旧的页面权重和排名转移到新的页面上。

下面是301重定向请求的流程:1. 用户请求访问旧页面当用户在浏览器中输入旧页面的URL地址或通过搜索引擎点击链接访问旧页面时,浏览器会发送一个HTTP请求到服务器。

2. 服务器接收到请求服务器收到用户的请求后,会检查请求的URL是否需要重定向。

如果需要重定向,服务器会发出一个301状态码,告诉浏览器请求的页面已经永久移到了新的URL地址上。

3. 浏览器接收到301状态码当浏览器接收到服务器发出的301状态码时,它会自动向新的URL 地址发送一个新的HTTP请求。

4. 服务器重定向请求到新的URL地址服务器接收到新的HTTP请求后,会将请求重定向到新的URL地址。

这个过程是透明的,用户不会察觉到URL地址已经发生了变化。

5. 浏览器显示新页面内容当服务器将请求重定向到新的URL地址后,浏览器会显示新页面的内容。

用户可以继续访问和浏览页面,而不会感觉到页面发生了变化。

需要注意的是,301重定向是一种永久性重定向,意味着搜索引擎会把旧的页面的权重和排名转移到新的页面上。

如果需要临时性重定向,可以使用302状态码。

总结301重定向是一种对网站进行优化的重要手段。

通过将旧页面的权重和排名转移到新页面上,可以保证网站在搜索引擎中的排名和权重不会受到影响。

在进行网站迁移、更改URL地址等操作时,需要注意对旧页面进行301重定向,确保用户和搜索引擎可以访问到正确的页面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Apache下htaccess使用技巧:301重定向、404错误等
换域名了,以前域名的收录怎么办?老域名的权重如何转移到新域名呢?百度搜索引擎优化手册里面说的是使用301永久重定向,那么如何灵活应用301重定向呢?下面就说说apache服务器下使用htaccess来实现301永久重定向的方法。

你是同一目录下的网站,还是不同目录下的网站,如果是同一目录下的网站,就必需要地址判断,以免出现“此网页包含重定向循环”;如何是不同目录下的网站,就可以直接弄转向,也就是所有来路域名都转;如果两域名在同一目录,请把伪静态规则放在 301的下面,即先转,再伪。

一、301 永久重定向:
1、所有链接重定向首页:可新建一个 index.php (两站不同目录)
1. <?php
2. header('Location:');
3. ?>
2、只首页重定向,贴子等都不重定向、不变:
1. RewriteEngine on
2. RewriteCond %{HTTP_HOST} ^$ [OR]
3. RewriteCond %{HTTP_HOST} ^$
4. RewriteRule ^/?$ "http\:\/\/www\.ptuso\.com" [R=301,L]
注:只首页重定向,内页、目录不重定向,访问还是原地址。

[OR] 是“或” 也就是使用带WWW和不带WWW的都转,应该可以加很多 [OR] 做条件。

如bbs子域名转 bbs目录转。

注意, [OR]条件判断,如果只一个条件,请把 [OR] 去掉。

不然有可能出现:“此网页包含重定向循环”
(以上为两站同一目录下使用,如果网站不同目录,就不需要网址判断,直接使用最下一行)
注意:以上规则中:
^ 表示:是
!^ 表示:不是
[NC] 为不管大小写。

2、首页、贴子、目录都重定向 的首页、或指定页:
1. RewriteEngine on
2. RewriteCond %{HTTP_HOST} ^$ [OR]
3. RewriteCond %{HTTP_HOST} ^$
4. RewriteRule ^(.*)$ [R=301,L]
注:首页、内页、目录都重定向到的首页。

(以上为两站同一目录下使用,如果网站不同目录,就不需要网址判断,直接使用最下一行)
3、www域名转根域名 301。

这个是最常用的,首页、贴子、目录,所有的都同步重定向:
1. RewriteEngine on
2. RewriteCond %{HTTP_HOST} ^$ [NC]
3. RewriteRule ^(.*)$ "/$1" [R=301,L]
注:首页、内页、链接将都重定向到另一站的相同链接。

(以上为两站同一目录下使用,如果网站不同目录,就不需要网址判断,直接使用最下一行)
4、A域名转B域名,首页、贴子、目录,所有的都同步重定向:
1. RewriteEngine on
2. RewriteCond %{HTTP_HOST} ^$ [OR]
3. RewriteCond %{HTTP_HOST} ^$
4. RewriteRule ^(.*)$ "/$1" [R=301,L]
注:首页、内页、链接将都转向到另一站的相同链接。

(以上为两站同一目录下使用,如果网站不同目录,就不需要网址判断,直接使用最下一行)
5、如果只子目录重定向,包括目录下的所有链接,其它的不重定向:
如:要把 /bbs 下重定向到 来,但不重定向。

(以上为两站同一目录下使用,如果网站不同目录,就不需要网址判断,直接使用最
下一行)
(这个子目录转,判断语可不用,直接使用最后一行,子目录下的所有来路都转) 301转向,这个你就自己总结1、2、3、4,灵活应用吧!
----------------------------------------------------------------
以上为301把贴子、地址都重定向到新地址。

如果不需要贴子地址都重定向,只把域名重定向,那么,你只需用一首页文件index.php
内容为:(网址换成你要重定向到目标网址)
1. <?php
2. $url="".$_SERVER["REQUEST_URI"];
3. header("HTTP/1.1 301 Moved Permanently");
4. header("location:");
5. ?>
这方法为域名直接跳转,如需跳转到子目录,直接在网址加上子目录即可。

(两站不同目录)
htaccess技巧在 Linux 系统,支持 htaccess 规则下使用。

注:301转向.htaccess 的规则在 Linux 系统 Apache 上测试通过,但是在 Linux 系统 LiteSpeed 上出现 500错误等。

或许不兼容。

二、建一个404.htm 文件传根目录
自动义 404、403 错误,在.htaccess里面添加
1. ErrorDocument 404 /404.htm
2. ErrorDocument 403 /404.htm
注:可自己设定无法找到文件转到哪个页后面的404.htm 可自行改。

三、.htaccess 设置默认首页:
DirectoryIndex index.html index.php default.htm
注:有些空间,默认首页先后不同,自己想要把哪个先访问,可用此设置
四、.htaccess 禁止IP访问网站:
1. Order Allow,Deny
2. Deny from 582.46.2.67
3. Allow from all
注:禁止 582.46.2.67 这个IP访问你的站点,可自己测试下禁止自己IP。

可应该在,如遇到服务器攻击,查出这个IP,禁止这个IP访问。

五、.htaccess 禁止图片、文件盗链:
1. RewriteCond %{HTTP_REFERER} !^$ [NC]
2. RewriteCond %{HTTP_REFERER} ! [NC]
3. RewriteRule \.(gif|jpg|rar|zip)$ /logo.gif [R,L]。

相关文档
最新文档