htaccess - 简单的重写规则不会触发

时间:2017-03-04 12:33:41

标签: apache .htaccess mod-rewrite

我试图匹配一个简单的规则来重写网址,但它只是不匹配。我想重定向 的 https://example.com/web/thanks/ 至 的 https://example.com/thanks.php

这是我尝试过的事情

RewriteEngine On
RewriteBase /
RewriteRule ^thanks/$ https://example.com/thanks.php [R=302,L]

RewriteEngine On
RewriteRule ^thanks/$ https://example.com/thanks.php [R=302,L]

RewriteEngine On
RewriteBase /
RewriteRule ^/(.*)/thanks/$ https://example.com/thanks.php [R=302,L]

RewriteEngine On
RewriteBase /
RewriteRule ^web/thanks/$ https://example.com/thanks.php [R=302,L]

和更多微小的变化,但没有一个触发。我尝试使用this online tool并返回"此规则未得到满足"。我做错了什么?

1 个答案:

答案 0 :(得分:1)

要重写,只需使用您的上一条规则

RewriteRule ^web/thanks/?$ /thanks.php [L]

进行以下更改

  • RewriteBase,这仅适用于某些相对网址

  • 可选的尾部斜杠/?,如果您希望同时使用/web/thanks/web/thanks/

  • 没有域名,因为这可能会触发重定向而不是重写,请参阅RewriteRule

      

    绝对网址
      如果指定了绝对URL,则mod_rewrite将检查主机名是否与当前主机匹配。如果是,则删除方案和主机名,并将生成的路径视为URL路径。否则,将对给定的URL执行外部重定向。要强制外部重定向回到当前主机,请参阅下面的[R]标志。

  • 没有R|redirect标志,因为这会触发重定向而不是重写

模式^.*thanks/$^(.*)thanks/$也有效,但它匹配以thanks/结尾的任何网址,例如/hellothanks//areyousurethanks//some/path/thanks/ ,...