【问题标题】:htaccess redirect makes infinite loop - is there another way?htaccess 重定向使无限循环 - 还有另一种方法吗?
【发布时间】:2015-09-15 12:18:02
【问题描述】:

我需要将此 URL (http://www.example.com/learn) 重定向到此 URL (http://www.example.com/learn-it)。

问题是它匹配了重定向URL上的规则,并进行了无限循环。

这不起作用:

Redirect 301 http://www.example.com/learn http://www.example.com/learn-it

【问题讨论】:

  • 你应该使用 /learnit 而不是 /learn-it

标签: regex .htaccess url-redirection


【解决方案1】:

.htaccess 301 重定向

重定向访问者最顺畅的方法是使用 .htaccess 重定向。这没有延迟,因为在将页面提供给浏览器之前,服务器首先检查 .htaccess 文件...如果它看到这个旧页面永远不会加载,而是直接将访问者发送到新页面。

这些是我使用过的一些 .htaccess 重定向代码,它们可能会派上用场。无论如何,这不是一个完整的列表,但是我花了很长时间才找到如何做这些,所以我会为您省去麻烦并在此处列出它们。哦,请不要给我发邮件问我这些是如何工作的,就像我说的那样,我是在别人的帮助下找到这些的。我一点也不知道如何写这些东西,也没有任何功劳(或责任)了解它们的工作原理。

如果您比我更有技术头脑并且想要直接从源头获取信息,请查看Apache Tutorial: .htaccess 文件以获取更多详细信息。

关于 htaccess 重定向的重要说明

  • 始终确保以 ascii 模式上传 .htaccess 文件,将其作为二进制文件发送会破坏它(并且通常会让您的服务器非常、非常不爽。)
  • 如果您使用的是 Windows 服务器,.htaccess 将不起作用。
  • 确保对所做的更改进行三次检查。清除缓存并查看,测试服务器标头以确保您看到 301(这意味着它的永久)而不是 302(临时),除非您绝对确定您真的是指临时的。
  • 由于某些操作系统不允许您创建没有“.”之前的文件的文件。您可能需要将其另存为 something.htaccess,有些甚至可能需要将其另存为 htaccess.txt 并在您上传后进行更改。
  • 确保您的 ftp 程序将显示 .htaccess 文件(FileZilla 确实并且是免费的)编辑您看不到的内容有点困难;)
  • 仔细检查您没有覆盖旧的(一些服务器已经为您的自定义 404 页面等放置了一个)
  • 确保将 example.com 替换为您自己的网站 URL ;-)

移动单个页面

为您的访问者提供快速、轻松和无缝的体验。

Redirect 301 /oldpage.html http://www.example.com/newpage.html

移动整个网站

这将捕获旧网站上的任何流量并将其重定向到新服务器上的索引页面。如果您想将每个页面重定向到新位置,这不适合您。

Redirect 301 / http://www.example.com/

详细说明。如何使用 .htaccess 重定向页面。阅读this

【讨论】:

    【解决方案2】:

    您应该使用 RedirectMatch 以便使用正则表达式来匹配确切的 URI:

    RedirectMatch 301 ^/learn/?$ /learn-it
    

    确保在测试之前清除浏览器缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-10
      • 1970-01-01
      • 2019-04-01
      • 2012-10-01
      • 2020-10-27
      相关资源
      最近更新 更多