【问题标题】:Redirect site with .htaccess but exclude one folder使用 .htaccess 重定向网站但排除一个文件夹
【发布时间】:2011-03-25 17:58:04
【问题描述】:

我想 301 重定向整个网站,但排除 /root 目录中存在的名为 /uploads 的文件夹中的所有内容。

我在谷歌上搜索过,但没有找到任何结果,或者我认为我看到的内容不正确。

我们可以破解这个吗?

【问题讨论】:

    标签: apache .htaccess redirect


    【解决方案1】:

    试试这个mod_rewrite 规则:

    RewriteEngine on
    RewriteRule !^uploads($|/) http://example.com%{REQUEST_URI} [L,R=301]
    

    此规则匹配任何/uploads/uploads/ 开头的URL 路径(由于在. htaccess 文件)并将请求重定向到 example.com 的相应路径。

    【讨论】:

    • 是否有在后台执行此操作的选项,因此用户实际上不会被重定向,但所有请求都会被代理到另一个地址?
    • @burninggramma 试试P 而不是R=301
    • @Gumbo 我得到了 403 禁止
    • 谢谢。我将您的答案用于我自己复杂的要求stackoverflow.com/a/35435802/80353
    【解决方案2】:

    我自己偶然发现的简单答案。

    在任何其他调用之前的顶部添加以下内容

    RewriteRule ^(uploads) - [L]
    

    【讨论】:

    • 如果有人好奇 [L] 的作用:httpd.apache.org/docs/2.4/rewrite/flags.html#flag_l
    • 这是一个不完整的答案。我使用了来自 mod_alias 的Redirect,这似乎不能一起工作。因此,请添加一些信息如何与将所有其他页面重定向到 另一个 域一起使用,因为许多其他人告诉我 mod_alias 不是进行域重定向的正确选择。
    • @ThomasTempelmann mod_alias 和 mod_rewrite 不能很好地配合使用。我不打算详细说明原因(因为它超出了这个问题的范围),但这里有一个指向另一个可能有帮助的问题的链接。 stackoverflow.com/a/808089/588005
    • 这就是说以“uploads”开头的uri不应该改变,并且由于没有隐式设置重定向,它可能会导致重定向循环。为什么在这里使用大括号?
    • 这会破坏“uploads_b”的重定向
    【解决方案3】:

    我想你想要这个:

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/uploads/
    RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
    

    如果您收到 500 Internal Error,请仔细检查第二行的 }! 之间是否有空格。

    【讨论】:

      【解决方案4】:

      基于模式别名的解决方案

      重定向除特定文件夹之外的所有文件夹

      将以下行添加到您的 root/.htaccess :

      RedirectMatch 301 ^/((?!uploads).*)$ http://newdomain.com/$1
      

      这会将所有页面(不包括 /uploads/*)从旧域重定向到新域。

      【讨论】:

      • 这很完美!非常有用,因为我无法使用 mod_rewrite,因为没有在客户的服务器上启用
      • 这是我的虚拟http 主机的解决方案,其唯一目的是包含certbot certonly --webroot.well-known 目录(让我们加密):RedirectMatch permanent ^/((?!\.well-known)(/.*)?)$ https://%{SERVER_NAME}/$1
      • 对于不使用 RewriteEngine 的情况,有这个解决方案很好;在也使用 RewriteRules 的(虚拟)主机中,最好使用RewriteCond 解决方案。
      猜你喜欢
      • 2017-04-07
      • 2017-05-31
      • 2023-03-23
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多