Redirect 301 /privacy-statement https://example.com/privacy/
应避免使用mod\\u别名
Redirect
当您已经在为其他重定向使用mod\\u rewrite时,返回指令。mod\\u alias在mod\\u重写之后运行,而不考虑
.htaccess
文件,因此可能会发生意外冲突。这应该转换为mod\\u重写(
RewriteRule
) 改为重定向:
RewriteRule ^privacy-statement$ /privacy/ [R=302,L]
请注意,这会重定向特定URL
/privacy-statement
, 没什么了(我想这是你需要的)。这个
Redirect
指令是前缀匹配的,因此它可能会匹配更多的内容(但源URL和目标URL上的斜杠不匹配,因此这可能会破坏某些内容)。
我假设您正在从/重定向到同一个域,因此我没有将该域包含在替换中。
还要注意,我在这里使用了302(临时)重定向。在更改为301(永久)之前,最好使用302进行测试——如果这是您的意图的话——只有在您确认一切正常后。浏览器会持久缓存301s,因此可能会导致测试出现问题。
# Make sure these pages and their children aren\'t redirected
RewriteEngine on
RewriteCond %{REQUEST_URI}!^/about-us/(.*)
RewriteCond %{REQUEST_URI}!^/contact/
# Redirect the rest to the new subdomain
RewriteRule (.*) https://shop.example.com/$1 [R=301,L]
这看起来基本正常,但是,在
RewriteCond
指令-因此这将失败。
这个(.*)
在的末尾,CondPattern是超级模式。两个正则表达式匹配/about-us/<anything>
和/contact/<anything>
(或者更确切地说,“不匹配”,因为正则表达式是否定的)。
您只需要RewriteEngine
指令在文件中执行一次。它实际上可以去任何地方,甚至在最后,尽管在任何mod\\u重写指令之前,在顶部包含它是合乎逻辑的。(您不应编辑的WordPress前端控制器已包含RewriteEngine On
指令,因此无需重复。但如果你这样做,也没有坏处。)
这些重定向需要在任何WordPress前端控制器之前进行。
总而言之:
RewriteEngine on
# Redirect this one page to a new url
RewriteRule ^privacy-statement$ /privacy/ [R=302,L]
# Make sure these pages and their children aren\'t redirected
RewriteCond %{REQUEST_URI} !^/about-us/
RewriteCond %{REQUEST_URI} !^/contact/
# Redirect the rest to the new subdomain
RewriteRule (.*) https://shop.example.com/$1 [R=302,L]
再次使用302s进行测试。
我假设您的主域和子域指向文件系统上的不同区域(甚至不同的文件系统),否则您将需要一个额外的条件来检查请求的Host
重定向之前。