问题
在 apache 中,如果您要转到精确的字符串,我该如何重定向到主页,但该字符串后面的所有内容都应正常显示,无需重定向。
例子。
http://example.com/STRING -> go to homepage
http://example.com/STRING_PAGE -> go to http://example.com/STRING_PAGE
我试过
Redirect 301 /STRING http://example.com/
但在这种情况下,页面也会重定向到主页,例如 的情况http://example.com/STRING_PAGE
。
谢谢。
答案1
而不是使用mod_alias
和它的重定向指令,您可以使用mod_rewrite使用RewriteRule
带有RewriteCond
:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/STRING_PAGE [NC]
RewriteRule ^/?STRING / [R=301,NC,L]
这会重定向所有以/STRING
或开头STRING
但不以 开头的请求。如果规则是在上下文中定义的,则需要/STRING_PAGE
匹配前导斜杠,而在或上下文中则必须省略。将其设为可选会更易于使用,因此规则可以在两者中都使用。^/
VirtualHost
<Directory/>
.htaccess
/?
这数控标志用于不区分大小写的匹配,并且大号停止处理任何后续规则。
您需要启用mod_rewrite
(sudo a2enmod rewrite
)才能使用此功能。