301 通过 htaccess 将所有内部页面重定向到新的域内部页面

问题描述 投票:0回答:1

我希望通过 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。对于主页,它工作正常。

你能建议一个代码来修复那个错误吗?

apache .htaccess redirect mod-rewrite http-status-code-301
1个回答
0
投票
# 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。

© www.soinside.com 2019 - 2024. All rights reserved.