【问题标题】:How to combine .htaccess rules?如何组合 .htaccess 规则?
【发布时间】:2016-09-16 15:05:40
【问题描述】:

我想将这两个.htaccess 规则组合成一个网站:

RewriteRule ^newsletter\.html$ https://fleio.com/newsletter [L,R=301]  
RewriteRule ^newsletter[/]?$ newsletter.html [L]

如果只有一个处于活动状态,它正在做它必须做的事情。但是当我同时使用它们时,我得到一个错误

重定向太多。

https://docs.google.com/document/d/1M6rYkEV-tmO7wRSJYjGtGOFow-76ZvbODnnjiqCh1m0/edit?usp=sharing

【问题讨论】:

  • 您将一个重定向到另一个,反之亦然,这是一个循环。您要将哪些 URL 重定向到哪里?
  • 我们不会去“外面”看代码。将其粘贴到此处作为对您问题的编辑
  • RewriteRule ^newsletter\.html$ exanple.com/newsletter [L,R=301] RewriteRule ^newsletter[/]?$ newsletter.html [L]
  • 我希望该时事通讯显示 newsletter.html 的内容,然后将 newsletter.html 重定向到 example.com/newsletter
  • 这正是正在发生的事情。

标签: apache redirect mod-rewrite web


【解决方案1】:

您的第二条规则是在内部多次将请求重定向到同一位置(第一个 rue),因此您会收到循环错误。您需要使用 RewriteCond 并匹配 the_request 变量以防止重写循环。

试试这个:

RewriteEngine on

RewriteCond %{THE_REQUEST} /newsletter\.html [NC]
RewriteRule ^ /newsletter/ [L,R]
RewriteRule ^newsletter/?$ /newsletter.html [NC,L]

【讨论】:

  • 谢谢您!工作还不错。
  • 欢迎您@badhrhari 如果您使用的是 apache 2.4.,您可以在内部 rewriteRule 中使用 END 标志来防止重写循环。以下示例适用于 apache 2.4 及更高版本:RewriteRule ^newsletter\.html$ https://fleio.com/newsletter [L,R=301] RewriteRule ^newsletter[/]?$ newsletter.html [END]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
相关资源
最近更新 更多