如何设置Mod_Rewrite(第2页)

本教程将介绍Mod_Rewrite,一个apache模块,允许您操纵URL以提供更短或更相关的。本教程将介绍激活Mod_Rewrite,创建和使用所需的.htaccess页面,以及设置URL

续第1页

重写条件

前一页上的三个示例显示了如何重写URL以使网站更易于访问和记住。 重写规则还可以具有条件以确保重写仅在特定情况下发生。 示例1:如何防止热链接 热链接是将来自一个服务器的图像或对象用于另一个服务器的过程。此操作会从受害者的服务器中消耗带宽,并拒绝对象的创建者访问他们可能已获得的其他网站的任何其他访问者。 您可以通过将到您网站上某个对象的所有链接重定向到其他不太愉快的图片,或通过完全禁止操作来防止热链接。
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]
RewriteRule .*\.(gif|jpeg|png)$ https://www.howtoing.com/wp-content/uploads/unpleasantness.jpg [R,NC,L]
现在解释一下:
  • %{HTTP_REFERER}:这是指流量来自哪里。百分号表示它是一个apache变量。
  • !:感叹号否定其后的模式。在实际上,这指出任何如下它并不需要被重写规则的影响的条件下下降。
  • ^ $:如前所述,插入符号表示字符串的开头,而美元符号表示结尾。在这种情况下,它们之间没有任何内容,因此引荐来源网址不存在。换句话说,这一行表明直接链接不受重写规则的影响。
  • 第二个条件再次引用引荐来源网址。
  • !^ http://(www \。)?example \ .com /.*$:感叹号声明引荐来源网址不应是我们自己的网站
  • 最后,我们得到重写规则本身,它说明任何链接到以扩展名gif,jpeg或png结尾的文件将被重新路由到一些不愉快的图片,教导热链接器一课。如果我们只是想禁止他们访问任何图像,我们可以对最后一行的RewriteRule进行一个小编辑。除了提供另一个目的地,如此行所示,您可以改为只发送重写到禁止页面:
    RewriteRule .*\.(gif|jpeg|png)$ - [F]
示例2:如何向URL添加www mod_rewrite可以做的另一个有用的技巧是将www添加到域。虽然一个人很容易看到example.com和www.example.com是相同的网站,但搜索引擎将它们注册为重复,损害了他们的排名。 要解决此问题,您可以选择始终删除www或始终将其添加到网址中。此示例将显示如何确保www始终附加。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301]
现在解释一下:
  • %{HTTP_HOST}:这是指请求的网址中的网站
  • ^ example.com $:说明请求的网页必须是example.com
  • ^(。*)$:重写规则说任何文本之后可以跟随域。
  • [R = 301]:该标志表示URL被重定向,并且301指出这是永久重定向。临时的一个用号码302指定。
然后,所有内容都会从example.com转换为www.example.com 示例3:阻止特定IP地址 这是防止例如特定IP地址处的恶意方访问站点的有用工具。
RewriteCond %{REMOTE_ADDR} ^(12\.34\.56\.789)$
RewriteRule (.*) - [F,L]
现在解释一下:
  • %{REMOTE_ADDR}:这表示访问我们的网站的IP地址,以及我们要阻止的IP地址。
  • ^(12 \ .34 \ .56 \ .789)$:您可以使用此部分键入恶意IP地址。请记住,反斜杠是非常重要的。它们将句点指定为标点符号,而不是将其标准正则表达式用作通配符。
  • (。*):这表示来自阻止的IP的任何文本将导致重写规则完成。
  • [F,L]:标志完成规则。 [F]禁止访问,[L]阻止任何其他规则的应用,使其成为最后一条规则。

资源

前面的章节是Mod_Rewrite功能的基本概述。 主题是相当广泛的,有许多细微差别,可以使它是一个非常有用和灵活的工具。 以下是有关Mod_Rewrite的更多信息的一些链接: