【问题标题】:Avoid redirect htaccess redirect for subdomain避免为子域重定向 htaccess 重定向
【发布时间】:2021-11-17 00:02:06
【问题描述】:

我们目前在我们的主域 (www.example.com) 上使用重定向来自动转到主目录 (www.example.com/main),而不是少数允许使用以下代码的其他目录之一;

RewriteCond %{REQUEST_URI} !/(logos|press|main)/ [NC]
RewriteRule ^(.*)$ /main/$1 [R=301,L]

这很好用,但我们现在看到一个问题,尽管尝试使用子域 (dev.example.com) 时会自动重新路由到 www.example.com/main

我将如何维护我们在主页上执行的正常重定向但同时允许访问 dev.example.com 子域?

【问题讨论】:

    标签: .htaccess redirect


    【解决方案1】:

    好吧,我假设两个主机(“主域”和“子域”)都来自同一个 http 服务器?如果是这样,您显然需要一个条件来确保仅在请求特定主机(“www.example.com”)时才应用您的重定向规则:

    RewriteEngine on
    RewriteCond {HTTP_HOST} ^(www\.)?example\.com$
    RewriteCond %{REQUEST_URI} !^/(logos|press|main)/ [NC]
    RewriteRule ^ /main{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • 这太好了,谢谢!它看起来像预期的那样工作。并且只是为了确保我正确理解它,这是这样设置的,以便任何带有目录的子域/子都可以使用 xxx.example.comxxx.example.com/yyy 但一旦它加载为 www.example.com (我假设 https://example.com 自动加载为www) ,然后它将检查该目录是否是 logos/press/main 并允许任何内容,否则将默认为 main 和之后的任何子目录。我想我明白了,但这听起来对吗?感谢您的帮助!
    • 我建议您尝试了解那里实际编码的内容。这种前向解释更容易理解:这是一个简单的重定向规则到 /main 文件夹,它将应用于所有请求,except 如果两个条件之一是 not i> 已完成: 1. 请求的主机名必须是“www.example.com”或“example.com”(即相同)且请求的路径不 从文件夹“logos”、“press”或“main”开始。
    • 一般来说,你永远不应该只是复制你在互联网上某个地方找到或提供的东西。您需要了解那里的编码。因此,如果某些事情对您来说不是很明显,那么请查看文档并了解事情的实际工作原理在接受它们之前。通过这种方式学习,您每天都会变得越来越好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多