【问题标题】:Remove wildcard subdomains but not existing ones with .htaccess使用 .htaccess 删除通配符子域,但不删除现有子域
【发布时间】:2011-12-27 09:34:16
【问题描述】:

你好!

我正在尝试为通配符子域设置我的 .htaccess 文件,但我真的不知道该怎么做。

我有“domain2”作为别名指向“domain1”,它运行良好,这是我正在使用的代码:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www)\.(.*)\.(.*)\.(.*) [NC]
RewriteRule ^(.*)$ http://%2.%3.%4/$1 [R=301,QSA,L]

RewriteCond %{HTTP_HOST} ^(.*\.?)domain2.co\.cc$  [NC]
RewriteRule (.*) http://%1domain1.co.cc/$1 [R=301,L]

顺便说一句,我在这里找到了 www 重定向:Optimize htaccess Wildcard Subdomain Code

现在,我想要删除所有不存在的子域以及保留存在的子域(例如“blog.domain1.co.cc”。

我希望有人可以帮助我解决这个问题。谢谢!

【问题讨论】:

  • 您能否提供更多详细信息,例如您希望发生的一些示例,定义存在哪些域等。
  • 我目前有 2 个域:discussions.domain1.co.cc 和 www.domain1.co.cc 任何通配符子域(如 asdf.domain1.co.cc)都应该重定向到 www.domain1.co .cc,但现有的子域(如 Discussions.domain1.co.cc)应排除在此规则之外。示例:asdf.domain1.co.cc/article-2 --> www.domain1.co.cc/article-2 discussions.domain1.co.cc/thread-7 --> discussions.domain1.co.cc/thread-7

标签: .htaccess redirect wildcard subdomain


【解决方案1】:
RewriteEngine On

#no longer needed
#RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
#RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

#don't redirect blog.example.com, forum.example.com and example.com
RewriteCond %{HTTP_HOST} ^((blog|forum)\.)?example\.com$
RewriteRule .* - [L]

#redirect the rest (including www.) to example.com
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

【讨论】:

  • 好吧,不幸的是它不工作。我昨天刚把我的网站搬到了另一个主机上,也许是因为这个。甚至域别名现在都不起作用。你能先帮帮我吗?我基本上希望所有内容都具有别名,因此它将子域和子目录重定向到另一个域,就像这样:forum.old.com/thread/12038213 --> forum.new.com/thread/12038213 我还没有在这里找到任何线程。
  • 请对此提出一个新问题。此外,我们需要比您在此评论中提供的更多信息。
  • 好的,谢谢。不过,这并不紧急。明年我会问,也许吧。节日快乐! =)
【解决方案2】:

尝试将以下内容添加到您的 htaccess 文件中。

#if these lines already exist, skip them
RewriteEngine On
RewriteBase /

#if its not www or discussions subdomain
RewriteCond %{HTTP_HOST} !^(www|discussions)\.domain1\.co\.cc$ [NC]
#redirect to www domain
RewriteRule .* http://www.domain1.co.cc%{REQUEST_URI} [R=301,L]

以下问题

将子域和子目录重定向到另一个域,就像这样:forum.old.com/thread/12038213 --> forum.new.com/thread/12038213

试试

RewriteEngine On
RewriteBase /

#if domain is old.com
RewriteCond %{HTTP_HOST} ^(.+)\.old\.com$ [NC]
#redirect to new.com
RewriteRule .* http://%1.new.com%{REQUEST_URI} [L,R=301]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多