执行以下操作的.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。现在我只需要以下规则:
谢谢 我用这样的东西
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,并且该规则确实生效,但我宁愿将其视为死链接。:-)