【问题标题】:Wildcard 301 redirect using .htaccess使用 .htaccess 的通配符 301 重定向
【发布时间】:2016-09-07 11:41:58
【问题描述】:

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

现在我需要为剩余的 URL、拼写错误等设置通配符。现在发生的情况是: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 /(.*) /$1

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

【问题讨论】:

    标签: apache .htaccess redirect wildcard http-status-code-301


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我想我的问题陈述错误了,所以我编辑了你的代码,在 lifeworks.life/ 之后删除了 $1 ,它完全符合我的需要!即将任何随机 URL 重定向到新的基本 URL。
    猜你喜欢
    • 2015-11-04
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    相关资源
    最近更新 更多