【问题标题】:htaccess forwarding some subdomainshtaccess 转发一些子域
【发布时间】:2014-09-17 15:01:09
【问题描述】:

我正在转发这样的子域(将 sub.example.com 转换为 example.com/subdomain/sub)

# the rewrite that forwards sub-domains as guide 
RewriteCond %{HTTP_HOST} ^(.+?)\.(.*) [NC]
RewriteRule (.*) http://%{SERVER_NAME}:9081/subdomain/%1/$1 [P,QSA,NE]

这很好用,但是会破坏所有指向 CSS/JS 文件的相关链接。

我希望我可以加入另一条规则,无论子域如何,它都会停止转发任何 example.com/resources 请求,即

RewriteRule ^resources\/$ http://%{SERVER_NAME}:9081/resources/$1 [QSA,P,L]

当前正在转发到 example.com/subdomain/resources,当我希望它转发到 example.com/resources 时。

知道如何覆盖特定子文件夹上子域的重写规则,或者这不可能吗?其他解决方案是我希望避免的 CSS/JS 中的绝对 URL。

谢谢

【问题讨论】:

  • 通常您会为此使用 mod_proxy 的 ProxyPassProxyPassReverse。然而,成功将取决于被代理的应用程序(无论您使用 mod_proxy 还是 mod_rewrite)。两种方式都不会编辑响应正文,只会编辑标题。

标签: apache .htaccess mod-rewrite


【解决方案1】:

您可以尝试添加条件:

# the rewrite that forwards sub-domains as guide 
RewriteCond %{REQUEST_URI} !\.(js|css)$ [NC]
RewriteCond %{HTTP_HOST} ^(.+?)\.(.*) [NC]
RewriteRule (.*) http://%{SERVER_NAME}:9081/subdomain/%1/$1 [P,QSA,NE]

【讨论】:

  • 谢谢。我尝试了这个,它破坏了重写,所以所有这些流量都重定向到 example.com 并带有损坏的 CSS/JS。我尝试添加一个 ^,所以 RewriteCond %{REQUEST_URI} ^\.(js|css)$ [NC],这使 CSS/JS 能够工作,但仍然将此流量定向到 example.com 如此接近,但不完全那里。任何想法如何更改该条件以使其重定向到页面,并且仍然可以找到 CSS/JS!?
  • @user5839 您的更改违反了规则,可能正在使用您的旧网站。或者你有没有像 http://domain:9081.css 这样的 JavaScript 或 CSS? ^\.(js|css)$ 开始和结束,在这种特定情况下,它会查找 domain.com.css 的 URL,这当然永远不会匹配。
  • 谢谢。现在这个条件是说除了 js/css 文件之外的所有内容,还是包括 js/css 文件?我希望它排除任何 cs/css 请求。
  • @user5839 对不起,我的意思是在里面有一个!。是的,你想排除 css/js 的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 2015-01-05
  • 1970-01-01
  • 2022-11-22
  • 1970-01-01
  • 2011-08-02
相关资源
最近更新 更多