如何使用.htaccess规则从当前URL添加子域名

时间:2014-02-28 09:03:45

标签: url

我有一个像这样的网址链接,   http://domain.com/abs/def/city

我想将其显示为 http://city.domain.com/ABC/def

使用.htaccess。

任何人都可以通过提供.ht访问规则来帮助我。

我想为URL中的每个城市名称编写.htaccess规则作为子域名。 此外,我希望它是动态的,因为现场有不同的城市。

我在.htaccess文件中使用以下代码,但无法正常工作。

RewriteRule ^ index.php /(.< em>)/(。)/([^ /] +)$ http://$3.domain/$1/$2/$3 [R = 301, L]

有没有办法通过修改我的上述代码或其他.htaccess代码来获取我的要求。

1 个答案:

答案 0 :(得分:0)

抱歉,但你提出的问题是不可能的。这是关于网址重写的典型误解:

在处理之前,Url重写会在服务器端重写(操作)传入请求。 可以改变传出内容,以便通过这种方式更改包含的网址。

虽然有解决方案:

  • apaches代理模块可以将一个url“映射”到其他url的范围内
  • 还有用于自动后处理生成的html标记的模块
  • 存在更多异国情调或创意解决方案,最终取决于您的情况......

但通常最简单的方法是更改​​应用程序(通常只是其中央配置),使其包含最终URL(指向您的子域中的子域)。然后,当未来的传入请求引用它们(它们被点击)时,您确实可以使用重写模块将这些模块“重新映射”到前一个范围。


好的,第二步从评论中获取更多信息:

只是为了清楚明白:您了解无法通过重写更改您发送的链接,但是您希望在用户拥有后更改浏览器中显示的网址点击一些城市链接? 与你之前写的不同,实际上是可能的。大。

如果重写按您的意愿工作(您在浏览器地址栏中看到了所需的网址),那么我们就可以继续了。该错误消息表示名称解析问题,与重写无关。很可能域“cambridge.192.168.2.107”无法解决,这实际上并不令人惊讶。你不能混合IP地址和名称,它是或。

此外,我发现您使用的是内部不可路由的地址。因此,您自己也负责名称解析,因为没有公共DNS服务器可以猜出您在内部设置的内容。是你做的吗?

我建议采取以下措施:

  1. 停止使用ip地址,使用域名。
  2. 由于您在内部工作,请注意该域名实际上已解析为您的本地系统IP地址。显然,如何执行此操作取决于您的设置和系统。您很可能需要文件/etc/hosts中的某些条目或类似内容。
  3. 您需要注意那些“子域名”也会被解析为同一地址。这不是一件轻而易举的事,它取决于您在本地使用的设置和系统。
  4. 如果该名称解析有效,那么您应该在http服务器访问日志文件中看到一个请求。然后,只有这样才有意义继续......