【问题标题】:301 redirect folder root301重定向文件夹根目录
【发布时间】:2022-01-20 12:41:13
【问题描述】:

我正在为一个相当简单的 301 重定向而苦苦挣扎。

我有几个重定向页面都可以正常工作 - 例如

Redirect 301 /folder/mypage1.html https://www.example.com/folder/mypage2.html.

但是现在我想从文件夹根目录重定向到另一个页面,但我不希望文件夹中的任何其他页面重定向。

所以/myfolder/ 应该重定向到https://www.example.com/mypage.html/myfolder/mypage.html 不应该重定向。

我试过了:

Redirect 301 /myfolder/ https://www.example.com/mypage.html 但这不起作用。

对于这个答案可能很简单的新手问题,我深表歉意。

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite url-rewriting


    【解决方案1】:

    使用您显示的示例,请尝试遵循 htaccess 规则文件。这使用了 apache 的 THE_REQUESTvariable 来执行重写。

    请确保在测试您的 URL 之前清除您的浏览器缓存。

    RewriteEngine ON
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{THE_REQUEST} \s/myfolder/\s [NC]
    RewriteRule ^  mypage.html [L]
    

    【讨论】:

    • 如果您需要在上面显示的规则中将最后一行的更改重定向到RewriteRule ^ mypage.html [R=301,L]
    【解决方案2】:

    使用RedirectMatch,它使用正则表达式进行匹配,而不是简单的前缀匹配(如Redirect)仅重定向文件夹的请求。

    例如:

    RedirectMatch 301 ^/myfolder/$ https://www.example.com/mypage.html
    

    RedirectRedirectMatch 都属于同一个 Apache 模块:mod_alias

    如果您一直在尝试 301(永久)重定向,则需要清除浏览器缓存。首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-20
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      相关资源
      最近更新 更多