我希望通过 htaccess 文件 301 将旧 URL 的所有内部页面重定向到新 URL 的单个目的地。
就像我希望将
http://www.advancedbuildings.org/main_t_lighting_e_dimmable_ballasts.htm
和所有其他内部页面重定向到https://teamemergencyplumber.com/advancedbuildings-org/
.
我现在正在使用这个代码
RewriteEngine On
# Redirect main domain
RewriteCond %{HTTP_HOST} ^(www\.)?advancedbuildings\.org$ [NC]
RewriteRule ^$ https://teamemergencyplumber.com/advancedbuildings-org/ [L,R=301,NE]
# Redirect internal pages
RewriteCond %{HTTP_HOST} ^(www\.)?advancedbuildings\.org$ [NC]
RewriteRule ^(.*)$ https://teamemergencyplumber.com/advancedbuildings-org/$1 [L,R=301,NE,QSD]
它会出现像
https://teamemergencyplumber.com/advancedbuildings-org/main_t_lighting_e_dimmable_ballasts.htm
这样的错误。它将源 URl 中的字符串添加到导致 404 错误的目标 URl。对于主页,它工作正常。
你能建议一个代码来修复那个错误吗?
# Redirect main domain
RewriteCond %{HTTP_HOST} ^(www\.)?advancedbuildings\.org$ [NC]
RewriteRule ^$ https://teamemergencyplumber.com/advancedbuildings-org/ [L,R=301,NE]
-----HERE----^
只需删除
$
pattern上的
RewriteRule
(字符串结尾锚点)(这样它不仅与主页匹配)并完全删除第二条规则。换句话说:
# Redirect main domain and all internal pages
RewriteCond %{HTTP_HOST} ^(www\.)?advancedbuildings\.org$ [NC]
RewriteRule ^ https://teamemergencyplumber.com/advancedbuildings-org/ [L,R=301]
(这里不需要
NE
标志。)
这现在将 everything 从第一个域重定向到第二个域/URL。
您应该首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。但是,您需要清除浏览器(和所有中介)缓存,因为您之前实施的错误 301(永久)重定向将被cached!
但是请注意,像这样的多对一重定向很可能被搜索引擎视为软 404。