我试图匹配一个简单的规则来重写网址,但它只是不匹配。我想重定向 的 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并返回"此规则未得到满足"。我做错了什么?
答案 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/
,...