【问题标题】:Prevent htaccess 301 redirects on sub-domain防止子域上的 htaccess 301 重定向
【发布时间】:2012-07-13 12:35:44
【问题描述】:

我有 301 重定向,将 /index.html 定向到 /site 文件夹,当我创建子域时,它还将链接重定向到 /site,导致 404 Not Found

例如:members.mysite.com 重定向到 members.mysite/site 导致 404 错误我可以在不更改重定向的情况下为特定的 forlder 或其他内容添加 execption。

.htaccess 内容

AddType text/x-server-parsed-html .htm .html
RedirectMatch 301  ^/index.html(.*)$ /site$1

【问题讨论】:

  • 将子域的文档根设置在主域的文档根以外的其他位置使用 rewrite-mod 来做到这一点!

标签: .htaccess redirect


【解决方案1】:

您可以使用 mod_rewrite 来检查主机:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^your-main.domain.com$ [NC]
RewriteRule ^index.html(.*)$ /site$1 [R=301,L]

查看RewriteCond docs 以更好地描述其功能。您可以定制正则表达式 (^your-main.domain.com$) 以更符合您的需求,例如在前面添加 (www\.)? 来处理可选的“www”。

【讨论】:

  • 谢谢我不能按照你的方式工作,但我尝试了Redirect permanent index.html /site/ 并且子域工作正常我想知道这个和我之前使用的那个有什么区别?会伤害谷歌分析吗?
  • @Ahmedk 不,与您对Redirect 所做的不同之处在于它不会检查某人试图访问的主机。根据您的问题,看起来两个主机都由同一主机提供服务,因此您需要在重定向之前检查它是否是主站点,以防止子域也重定向。
  • 它不起作用,我认为它起作用但它起作用了,然后当我再次检查时它不起作用(重定向)并且子域正在工作我再次尝试了你的解决方案,当我得到我的site.com 转到 mysite.com/site 但是当尝试 members.mysite.com 它仍然转到 members.mysite.com/site 我只是不希望 /site 在请求子域时添加
  • RewriteCond 必须将主机匹配到仅主域,而不是任何子域,如果它匹配子域,它将重定向它。该正则表达式必须只匹配主域,如果匹配,子域将不会被重定向。
  • 最后我猜它成功了!我将最后一行更改为RewriteRule (.*) /site$1 [R=301,L] 删除了 ^index.html 可能会阻止它,它的工作但如果我输入 mysite.com/any-wrong-url 它重定向到 mysite/sitesitesitesitesitesite 循环重定向我猜它不显示404错误页面我可以禁用它吗谢谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多