如何重定向 htaccess 中的特定页面,并将所有其他页面重定向到主页?

如何重定向 htaccess 中的特定页面,并将所有其他页面重定向到主页?

如何将特定页面 301 到新的域 URI,然后将所有其余页面发送到主页?

例子

-- Specific pages I want to move -- 

Redirect 301 /contact.htm https://newdomain.com/contact
Redirect 301 /about.htm https://newdomain.com/about/
Redirect 301 /team.htm https://newdomain.com/team/

-- All other pages, just redirect to the homepage --

Redirect 301 /whatever.htm https://newdomain.com/
Redirect 301 /blah.htm https://newdomain.com/

答案1

要匹配所有剩余页面并重定向到新站点的主页,您需要使用指令RedirectMatch(也来自 mod_alias)。例如:

RedirectMatch 301 .* https://newdomain.com/

RedirectMatch指令使用正则表达式来匹配请求 URL,而Redirect使用简单前缀匹配

您不能Redirect在这里使用指令,它是前缀匹配,因为虽然诸如 的重定向Redirect / https://newdomain.com/将匹配所有剩余的 URL,但它将重定向到 处的相同 URL 路径newdomain.com。例如/whatever.htm将重定向到https://newdomain.com/whatever.htm(可能不存在 - 虽然这实际上可能是一件好事 - 因为大量重定向到主页无论如何都会被 Google 视为软 404,而真正的 404 可以为用户提供更多信息)。

需要补充的是,这确实假设它newdomain.com托管在不同的服务器上,否则,您将得到重定向循环。

答案2

htaccess 按时间顺序运行,因此您必须从上到下编写规则。

具体页面优先,然后最后一行将按“其他页面到首页”的规则。

在示例中,第一条规则仅重定向主页 - 以 /index.html 为例,如果其他规则与 URL 不匹配(如上面未在 htaccess 中定义的其他页面),则将运行最后一行。您可以使用整个代码,因为它已准备好使用。

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

### 301 redirect ###
#old homepage to new homepage
RewriteRule ^$ http://yourhomepage.com/ [L,R=301]

#specific pages to new specific pages
RewriteRule ^contact.html?$ http://yourhomepage.com/contact [L,R=301]
RewriteRule ^index.html?$ http://yourhomepage.com/ [L,R=301]

#other pages to the new website's homepage
RewriteRule ^(.*)$ http://yourhomepage.com/ [L,R=301]

答案3

您应该对所有不匹配的 URL 使用 RewriteRule。您还可以对所有先前的重定向使用 mod_rewrite。

类似这样的事情可能会有用。

RewriteRule ^(.*)?$ /index.html [R=301,L]

相关内容