【问题标题】:htaccess subdomain pointinghtaccess 子域指向
【发布时间】:2011-10-13 10:49:32
【问题描述】:

我需要一些有关 htaccess 子域的帮助,以便指向文件夹中的特定文件。

父文件夹内应包含单独的 php 文件以正确路径正确的应用程序。在这里听起来很简单。

用户类型的 url 不应更改/重定向,而应仅 在后台“链接”到正确的文件

例如当用户输入userbase.company.com它应该指向

http://company.com/parent/userbase.php

同样,当用户输入userbase2.company.com时,它应该指向

http://company.com/parent/userbase2.php

但不应该发生重定向。 url 链接应保留在

http://userbase2.company.com 

文件夹将是相同的,但不是文件。有可能吗?

目前我有这个 htaccess 代码:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^userbase.company.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.userbase.company.com$
RewriteRule ^(.*)$ \./parent/userbase.php/$1 [L]

我必须把它放在/public_folder/ 对吗?不在/public_folder/userbase

【问题讨论】:

  • 1) 什么是\./parent/?为什么前面有一个点.? 2)子域是否指向与主域相同的文件夹或什么? 3) 这些子域的数字是否有限(例如userbase & userbase2)或者可以是任何名称? 4)如果用户请求这个URL(例如):http://user1.company.com/hello/pink/kitten.php,它应该被重写(不重定向)到http://company.com/parent/user1.php/hello/pink/kitten.php,对吧? (基于您当前的规则)。
  • 1.点无关紧要,我只是想将它指向子文件夹,但它是错误的。 2.子域不指向里面的任何文件夹,但主域(company.com)指向单个文件夹,而是多个文件名(例如'userbase1.php,userbase2.php'等)。这里的原因是每个子域都作为独立的应用程序运行。 3.子域是无限的,在任何字。 4.是的,'company.com/parent/user1.php/hello/pink/kitten.php'是正确的url,但请注意不能通过更改浏览器url来重定向用户。每个子域的“user1.php”也是任意的
  • 你可能对我的叙述性解释感到困惑,但我在这里放了一个视觉插图,以便更容易直观地理解。请参考:stackoverflow.com/questions/6746143/…谢谢。 :)
  • 我在创建规则方面没有问题.. 但我想澄清#2。子域必须指向某个地方。它们很可能是主域的别名(站点可以接受任何子域)——这意味着它们指向网站根文件夹。我不想写规则和回答只是为了发现你的设置完全不同。
  • 我想我知道您的意思,您正在寻找一个文件夹路径,您可以在其中将 RewriteRule 路由到特定文件夹,因为子域无法路由到文件。好吧,我们可以将它路由到 /parent/userbase1、/parent/userbase2、/parent/userbase3。我突然想到,可能 CI 索引可以通过更改子域上的应用程序路径来路由它,我现在将尝试探索。但是,是的,我可以在 /parent/ 中添加额外的文件夹来解决这个 htaccess 问题。

标签: regex .htaccess mod-rewrite redirect subdomain


【解决方案1】:

这条规则应该可以完成这项工作:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^/parent/ 
RewriteCond %{HTTP_HOST} !=domain.com
RewriteCond %{HTTP_HOST} !=www.domain.com
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$
RewriteRule (.*) /parent/%1.php%{REQUEST_URI} [L]
  1. URL 在浏览器中将保持不变(意味着重写——内部重定向)。

  2. 它仅适用于something.domain.com(不适用于domain.comwww.domain.com)。

  3. 它将这个请求http://user1.company.com/hello/pink/kitten.php重写为/parent/user1.php/hello/pink/kitten.php

  4. 如果子域很复杂(例如www.something.domain.com),那么它也会反映在重写中:例如http://www.something.company.com/hello/pink/kitten.php 将被重写为 /parent/www.something.php/hello/pink/kitten.php。如果这种行为是不受欢迎的(我不知道您对 100% 的要求),那么您需要在规则中再添加 1 个条件。

  5. 主页请求(例如http://user1.company.com/)将以这种方式重写:/parent/user1.php/

附言 规则在发布之前已经过测试——工作正常,但如果它需要与您的 CodeIgniter 应用程序一起使用,您必须检查并可能对其进行调整(抱歉,我不熟悉该框架)。

在任何情况下,此规则都应该高于您的 CodeIgniter 重写规则(如果有的话)。

【讨论】:

  • 嗨,这也符合我的要求。是的,我想我可以做剩下的关于框架的事情。但这符合子域重写的要求!非常感谢 LazyOne,不胜感激!
猜你喜欢
  • 2014-02-09
  • 2011-08-05
  • 2013-11-22
  • 2014-02-25
  • 2010-12-07
  • 1970-01-01
  • 2011-07-17
  • 2015-11-16
  • 2022-01-15
相关资源
最近更新 更多