执行以下操作的.htaccess重定向代码是什么?

执行以下操作的.htaccess重定向代码是什么?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,为了论证起见,让我们假装: 我的域名是mydomain.com 我有一些子域,比如svn.mydomain.com 我想: 如果此人键入mydomain.com以外的任何内容,例如mydomain2.com,则必须重定向到mydomain.com 如果此人键入任何没有子域的域,则必须重定向到www.mydomain.com,请记住,此规则不得影响svn.mydomain.com等子域 如果该类型位于svn.mydomain2.com中,则必须重定向到svn.mydomain.com 有什

为了论证起见,让我们假装:

  • 我的域名是mydomain.com
  • 我有一些子域,比如svn.mydomain.com
我想:

  • 如果此人键入mydomain.com以外的任何内容,例如mydomain2.com,则必须重定向到mydomain.com
  • 如果此人键入任何没有子域的域,则必须重定向到www.mydomain.com,请记住,此规则不得影响svn.mydomain.com等子域
  • 如果该类型位于svn.mydomain2.com中,则必须重定向到svn.mydomain.com
有什么帮助吗

迄今为止的解决办法:

RewriteCond %{HTTP_HOST} !^(www\.)?namhost\.com$ [NC]
RewriteRule (.*)  http://www.namhost.com/$1 [R=301,L]
这将把不包括namhost.com的任何内容重定向到www.namhost.com。例如:namhost.net-->namhost.com,www.namhost.com-->namhost.com。现在我只需要以下规则:

  • 不允许将“localhost”重定向到www.namhost.com
  • 更改子域重定向到namhost.com。例如:someSubDomain.parkeddomain.com必须转到someSubDomain.namhost.com。一个真实的示例:ftp.namhost.com-->ftp.namhost.com

  • 谢谢

    我用这样的东西

    RewriteEngine On
    
    RewriteCond %{http_host} ^mydomain.com [NC]
    RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
    
    RewriteCond %{http_host} ^mydomain.com/login.php [NC]
    RewriteRule ^(.*)$ https://www.mydomain.com/login.php [R=301,L]
    
    您也可以通过这样做重定向到https

    RewriteEngine On
    
    RewriteCond %{http_host} ^mydomain.com [NC]
    RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
    
    RewriteCond %{http_host} ^mydomain.com/login.php [NC]
    RewriteRule ^(.*)$ https://www.mydomain.com/login.php [R=301,L]
    
    如果需要更改,请告诉我!:-)


    您的规则1没有显式子域

    如果此人键入mydomain.com以外的任何内容,例如mydomain2.com,则必须重定向到mydomain.com

    因此规则2似乎与规则1相矛盾

    如果此人键入任何没有子域的域,则必须重定向到www.mydomain.com

    i、 e.
    mydomain2.com
    byRule1将转到
    mydomain.com
    ,但是
    Rule2,因为它没有子域,所以将转到
    www.mydomain.com

    我假设在规则1中,您的意思是
    anysubdomain.non-mydomain.com
    应该转到
    www.mydomain.com
    。如果没有,请澄清,因为以下规则基于此假设

    尝试将以下内容添加到站点根目录中的.htaccess中

    RewriteEngine On
    RewriteBase /
    
    #redirect any domain without subdomain (including mydomain), to www.mydomain
    RewriteCond %{HTTP_HOST} !^[^\.]+\.[^\.]\..+$ [NC]
    #assume you do not want to carry over querystring or path just go to the root
    RewriteRule .  http://www.mydomain.com/? [R=301,L]
    
    
    #if it has a subdomain
    RewriteCond %{HTTP_HOST} !^([^\.]+)\.([^\.])\..+$ [NC]
    #that is not on mydomain
    RewriteCond %2 !^mydomain$ [NC]
    #and it is on the list of subdomains to redirect
    RewriteCond %1 ^(svn|otherIncludedSubdomains)$ [NC]
    #also assume no querystrings carried over here. If needed, remove the last?
    RewriteRule .  http://(%1).mydomain.com/? [R=301,L]
    
    我在这里应用,假设您的条件是互斥的(因此
    [L]
    适用
    [last]
    规则),并且重定向到域总是意味着重定向到文档根目录。你应该意识到这一点

    如果此人键入mydomain.com以外的任何内容,例如 mydomain2.com,它必须重定向到mydomain.com

    会是

    RewriteCond %{HTTP_HOST} !^mydomain\.com$
    RewriteRule ^/.*$ http://mydomain.com/ [R,L]
    
    RewriteCond %{HTTP_HOST} ![^.]+\.[^.]+\.[^.]+$
    RewriteRule ^/.*$ http://www.mydomain.com/ [R,L]
    
    RewriteCond %{HTTP_HOST} ^svn\.mydomain2\.com$
    RewriteRule ^/.*$ http://svn.mydomain.com/ [R,L]
    
    如果此人键入任何没有子域的域,则必须重定向到www.mydomain.com, 请记住,此规则不得影响子域,如svn.mydomain.com

    会是

    RewriteCond %{HTTP_HOST} !^mydomain\.com$
    RewriteRule ^/.*$ http://mydomain.com/ [R,L]
    
    RewriteCond %{HTTP_HOST} ![^.]+\.[^.]+\.[^.]+$
    RewriteRule ^/.*$ http://www.mydomain.com/ [R,L]
    
    RewriteCond %{HTTP_HOST} ^svn\.mydomain2\.com$
    RewriteRule ^/.*$ http://svn.mydomain.com/ [R,L]
    

    如果[y]类型位于svn.mydomain2.com,则必须重定向到svn.mydomain.com

    会是

    RewriteCond %{HTTP_HOST} !^mydomain\.com$
    RewriteRule ^/.*$ http://mydomain.com/ [R,L]
    
    RewriteCond %{HTTP_HOST} ![^.]+\.[^.]+\.[^.]+$
    RewriteRule ^/.*$ http://www.mydomain.com/ [R,L]
    
    RewriteCond %{HTTP_HOST} ^svn\.mydomain2\.com$
    RewriteRule ^/.*$ http://svn.mydomain.com/ [R,L]
    

    未测试。

    您需要为svn.mydomain2.com创建一个规则,以转到svn.mydomain.com-使用与上述相同的逻辑。试试看。我想要一个通用的规则来重定向所有的。原因是,我在一个帐户上有很多域名,但我并不总是知道是哪个域名。所以我需要换个方向。也就是说,在没有明确指定域名的情况下,我想说重定向除bla-bla-bla之外的所有内容。请让我知道我的答案是否有效。如果没有,您能否提供详细信息,例如您测试的URL、结果、您的.htaccess的内容等1。你读过修改手册了吗?2.参见前面的答案。我想重定向的顺序在这里很重要。我认为最具体的重定向应该首先出现,然后是更一般化的重定向。所以第一个应该是重定向到
    svn.mydomain.com
    ,然后是
    www.mydomain.com
    ,最后一个
    domain.com
    ,我不明白为什么。
    [L]
    标志使这些条件相互排斥。我同意,如果逐字记录,这可能不是最好的解决方案(例如,它会导致对svn.mydomain.com的一个额外请求),但这正是OP所要求的。如果我们按照您的建议更改订单,那么
    svn.mydomain.com
    最终仍会重定向到
    http://mydomain.com/
    。我认为OP没有意识到他们的条件是不实际的。无论如何,这个建议留给他们足够的时间去试验。如果你测试
    ^mydomain\.com$
    您还将捕获
    ^svn\.mydomain2\.com$
    您不想要的内容。AISB,这只是一个开始,因为这个问题有些矛盾。我认为目前还没有正确的答案。@RD。你想在我的答案中把这些添加到现有的规则中,还是它们是新的规则?基本上,我想要我在“到目前为止的解决方案”下写的内容。所以我只需要添加更多的htaccess规则,这将满足下面列出的两个新条件。这回答了你的问题吗?检查我的答案中添加的部分!我实际上意识到,在我的配置中,如果没有设置svn.namhosting.com,那么它将被视为不存在该链接。我可以为该域设置一个通配符,因此它是caugh,并且该规则确实生效,但我宁愿将其视为死链接。:-)