【问题标题】:Rewriting URL for subdomain redirection为子域重定向重写 URL
【发布时间】:2012-03-29 23:10:09
【问题描述】:

我需要通过一个页面列表来显示它们来自子域

当用户在浏览器中输入此网址时

xyz.mydomain.com/

它应该被传递为

www.mydomain.com/level1/pageA?subdomain=xyz

xyz.mydomain.com/innerpage_abc?param1=123

作为

www.mydomain.com/level1/innerpage?dynamicparam=abc&param1=123&subdomain=xyz

【问题讨论】:

  • 浏览器中的URL变成www.mydomain.com/level1/...可以吗?
  • 不,重写时浏览器中的子域url不应该改变
  • 在这种情况下,您需要启用 mod_proxy。您的两个域都指向同一个 DOCUMENT_ROOT 和同一个 Apache Web 服务器,对吗?
  • 是的,我在 dns 设置中将所有子域重定向到相同的 ip

标签: apache .htaccess mod-rewrite


【解决方案1】:

启用 mod_rewrite 和 mod_proxy。然后把这段代码放到DOCUMENT_ROOT下的.htaccess中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(xyz)\.mydomain\.com$ [NC]
RewriteRule ^$ http://www.mydomain.com/level1/pageA?subdomain=%1 [L,P,QSA]

RewriteCond %{HTTP_HOST} ^(xyz)\.mydomain\.com$ [NC]
RewriteCond %{QUERY_STRING} (?:^|&)param1=([^&]+) [NC]
RewriteRule ^([^_]+)_([^/]+)/?$ http://www.mydomain.com/level1/$1?dynamicparam=$2&subdomain=%1 [NC,L,P,QSA]

【讨论】:

  • 感谢 anubhava,我明天在域上实现它时会回复你
  • 第二次重写有一个问题,浏览器上的url从xyz.mydomain.com/innerpage...变成http://www.mydomain.com/level1/...
  • 正如您所见,P(用于代理)标志在两个规则中都有,因此它们的行为方式应该相同。第一个对你有用吗?
  • 是的,第一个工作正常。问题出在 websphere 商务中,它有自己的 seourlmapper 用于重定向。
  • 好吧,到目前为止,您还没有提到任何现有的 .htaccess 代码:) 无论如何,我提供的代码应该单独工作,但是如果您在问题中发布完整的 .htaccess,那么只有我可以提出一些建议来避免冲突。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 2012-02-23
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 2012-05-25
相关资源
最近更新 更多