重定向.htaccess:重定向到另一个域并重定向到另一个页面

  1. 重定向.htaccess:永久重定向,301
  2. 如何设置重定向到www(或没有www)
  3. 如何创建.htaccess
  4. .htaccess文件不起作用
  5. 在nginx中有.htaccess的类似物吗?
  6. 作者
  7. x64(又名andi)

周日好!

通常在论坛中,您可以在.htaccess上找到问题 - Apache Web服务器配置文件。 主要障碍是开发没有为最终用户提供方便配置的任务(该分发不包括使用复选框,下拉列表等进行可视化安装的shell),但是服务器管理员显着应对此任务,满足于“mana” (来自Linux团队 - - 来自开发人员的快速教程,或者在这种情况下从专业人员到专业人员)。

在大多数情况下,需要进行简单的操作:无条件重定向到另一个站点,或从一个地方重定向到另一个地方(例如,当该部分的URL发生更改时)。 每个人都开始相信任何地方都没有问题,在互联网上搜索解决方案并搜索论坛甚至没用。 让我们看看这些问题到底是什么。

在大多数情况下,需要进行简单的操作:无条件重定向到另一个站点,或从一个地方重定向到另一个地方(例如,当该部分的URL发生更改时)。 每个人都开始相信任何地方都没有问题,在互联网上搜索解决方案并搜索论坛甚至没用。 让我们看看这些问题到底是什么。

重定向.htaccess:永久重定向,301

这个东西有不同的名字。 Neponyatki可能会导致这个数字 - 为什么是301? 其本质在于HTTP协议本身,它使用特定的状态代码响应客户端请求。 几乎每个人都知道404 Not Found代码。 200 OK代码几乎是未知的,但这意味着一切都井井有条,文档将在浏览器中显示。 但代码301 Moved Permanently意味着文档最终移动到新地址。 这通常称为重定向,尽管总响应池被指定为 - 3xx:重定向

Apache有几种重定向选项。 mod_rewrite模块提供了一种处理重定向的优秀机制,将来我将在示例中使用它。 mod_alias模块还具有从特定地址或与正则表达式匹配的地址重定向的指令:
永久重定向/ http://newsite.ru/
RedirectMatch永久。* Http://newsite.ru/
但mod_rewrite有重定向的附加选项,所以最好使用它(恕我直言)。

一般来说,对于无条件外部(让我们称之为用户)重定向,浏览器会自动重定向到另一个页面,通常不知不觉地为用户(地址栏更改),您可以将这些代码放在.htaccess中:
RewriteEngine On
RewriteRule。* Http://newsite.ru/ [L,R =永久]
这里,第一行包括mod_rewrite模块的机制,允许对地址执行任何操作。 我们可以根据条件动态调用此URL转换。 第二行直接定义转换规则;在上面的示例中,所有请求都将重定向到http://newsite.ru/。 标志放在方括号中:L - 最后(最后)规则,R - 重定向类型(重定向),表示为R =代码,其中代码是字母或数字标记(永久或302)。

实际上,mod_rewrite是一个非常有用的东西,因为正因为如此,很多引擎都在积极地使用所谓的CNC(Human URL Understandable)。 如果您不熟悉这个术语,我将以一个例子来解释。 关于 该网站的免费引擎 的地址是:https://a-panov.ru/2014/11/free-cms/

查看此URL,很明显该文章于2014年11月发布。通过删除带有斜杠的标题 - https://a-panov.ru/2014/11/ - 我们将收到11月份所有出版物的列表。 普通地址,类型:

https://a-panov.ru/?p=389

没有特别友好。 看到这样的地址,你不能说他所领导的页面,绝对没有。

当您不关心要链接到的新站点的哪个页面时,此方法很好。 但是,如果您移动到另一个域,建议在保留地址的同时重定向所有请求。 为此,请使用以下代码:
RewriteRule ^。* $ Http://newsite.ru/$0 [QSA,L,R =永久]
新的QSA标志还将保存可在问号后面的地址中找到的参数。 在已经熟悉的例子中:

https://a-panov.ru/?p=389

如果我将代码放在上面的.htaccess中,那么将会重定向到地址http://newsite.ru/?p=389,如果没有此标志将不存在。

在下文中,我将省略转换包含指令:
RewriteEngine On
请记住:如果使用mod_rewrite机制,则必须在此指令之后执行所有条件/转换。 要禁用以下行:
RewriteEngine Off
因此,对于每个规则,不需要经常“打开”转换 - 它开始在第一个指令之后立即自动完成。

如何设置重定向到www(或没有www)

当网站在选项nsite.ru和www.nsite.ru上可用时,这种重定向是必需的。在这种情况下,搜索引擎认为它们是重复的,并且可以选择其中一个选项作为 主镜 ,或在搜索中,两个域都有选项。 通常,这在排名网站时是一个负面因素。

一个域的选项更容易。 重定向从子域www.site.ru到site.ru执行:
RewriteCond%{HTTP_HOST} ^ www \ .nsite \ .ru $
RewriteRule。* Http://nsite.ru/$0 [QSA,L,R =永久]
这是新的RewriteCond指令出现的地方,它设置了重定向应该工作的条件 - RewriteRule规则。 条件,在这种情况下,域名对应于www.nsite.ru (在正则表达式中,点符号表示“任何字符”,因此建议用反斜杠屏蔽它)。

反向重定向也很简单:
RewriteCond%{HTTP_HOST} ^ nsite \ .ru $
RewriteRule。* Http://www.nsite.ru/$0 [QSA,L,R =永久]
这两个选项都有效,但它们有一个小的减号 - 对于每个新的配置,有必要用你自己的替换nsite.ru域。 是否有可能做出独特的选择? 简单!

从任何www子域重定向:
RewriteCond%{HTTP_HOST} ^ www \。(。*)$
RewriteRule。* Http://%1 / $ 0 [QSA,L,R =永久]

使用www重定向到子域:
RewriteCond%{HTTP_HOST}!^ Www \。
RewriteRule。* Http://www.% {HTTP_HOST} / $ 0 [QSA,L,R =永久]

%{HTTP_HOST} - 当前域名

如何创建.htaccess

这些问题也会出现。 问题是标准资源管理器 (Windows中的应用程序,负责图形界面)不允许您创建以点开头的文件(通过右键单击桌面或窗口并从“ 创建”列表中选择所需的操作来创建文件或文件夹)。 但还有一条出路:打开标准的记事本记录器,在菜单中选择文件→另存为...,并指定.htaccess作为保存文件的名称 - 之后将创建它。

.htaccess文件不起作用

有些情况下,文件中的指令不起作用。 这通常是由Apache配置中禁用.htaccess支持这一事实引起的,该指令负责:
AllowOverride无

这通常是为了提高速度 - 在这种情况下,Web服务器不会搜索和解析.htaccess。

Apache也可能不在服务器上使用,例如,IIS是Windows主机上的主要“访客”。 如需澄清,请联系您的托管服务商的支持。

在nginx中有.htaccess的类似物吗?

另一个相当常见的问题 在此Web服务器中,这是不可能的。 但是,这通常不是必需的。 事实上,nginx通常作为一个前端安装,也就是说,它接受并处理它自己执行的所有请求或重定向到后端,这可以由Apache执行,可以使用.htaccess进一步配置。

作者

不在线1天

x64(又名andi)

评论:2834出版物:394注册:02-04-2009