使用 .htaccess 的通配符 301 重定向

Wildcard 301 redirect using .htaccess

我从 http://lifeworkslearningcenter.com to http://lifeworks.life 移动了一个网站。我为工作正常的个人 URL 设置了七个 301 重定向,以及一个简单的 301 将基础 URL 重定向到新基础 URL.

现在我需要为剩余的 URLs、拼写错误等设置一个通配符。现在发生的是:任何未在 7 个重定向中具体涵盖的 URL 将重定向到新的基础 URL,然后添加之前输入的尾随 URL,结果是 404。像这样:

http://lifeworkslearningcenter.com/incorrect-url

https://www.lifeworks.life/incorrect-url

这是我的 .htaccess 代码,包括之前对通配符重定向语句的三次尝试:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^lifeworkslearningcenter\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.lifeworkslearningcenter\.com$
RewriteRule ^about-lifeworks$ "https\:\/\/www\.lifeworks\.life\/team\.html" [R=301,L]

RewriteCond %{HTTP_HOST} ^lifeworkslearningcenter\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.lifeworkslearningcenter\.com$
RewriteRule ^services$ "https\:\/\/www\.lifeworks\.life\/services\.html" [R=301,L]

RewriteCond %{HTTP_HOST} ^lifeworkslearningcenter\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.lifeworkslearningcenter\.com$
RewriteRule ^methodology$ "https\:\/\/www\.lifeworks\.life\/approach\.html" [R=301,L]

RewriteCond %{HTTP_HOST} ^lifeworkslearningcenter\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.lifeworkslearningcenter\.com$
RewriteRule ^sign-up$ "https\:\/\/www\.lifeworks\.life\/enroll\.html" [R=301,L]

RewriteCond %{HTTP_HOST} ^lifeworkslearningcenter\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.lifeworkslearningcenter\.com$
RewriteRule ^rates-and-policies$ "https\:\/\/www\.lifeworks\.life\/policies\.html" [R=301,L]

RewriteCond %{HTTP_HOST} ^lifeworkslearningcenter\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.lifeworkslearningcenter\.com$
RewriteRule ^contact-us$ "https\:\/\/www\.lifeworks\.life\/contact\.html" [R=301,L]

RewriteCond %{HTTP_HOST} ^lifeworkslearningcenter\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.lifeworkslearningcenter\.com$
RewriteRule ^blog$ "https\:\/\/www\.lifeworks\.life\/blog\.html" [R=301,L]

Redirect 301 / http://lifeworks.life/

# FAILED ATTEMPTS AT WILDCARD REDIRECT

#RewriteCond %{HTTP_HOST} ^lifeworkslearningcenter\.com$ [OR]
#RewriteCond %{HTTP_HOST} ^www\.lifeworkslearningcenter\.com$
#RewriteRule ^$ "https\:\/\/www\.lifeworks\.life\/index\.html" [R=301,L]

#RedirectMatch 301 /(.*) /

#RedirectMatch ^/(.*)$ http://lifeworks.life/

您的通配符重定向应如下所示并置于其他规则的底部。

RewriteRule ^(.*)$ https://www.lifeworks.life/ [R=301,L]

如果您需要它根据找不到文件 (404) 进行重定向,您可以使用这些规则。并将这些放在规则的底部。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://www.lifeworks.life/ [R=301,L]