【问题标题】:Change port and host using .htaccess [closed]使用 .htaccess 更改端口和主机 [关闭]
【发布时间】:2013-03-27 03:09:32
【问题描述】:

我正在尝试使用mod_rewrite 基本上将子域上的端口转发到另一个 IP 上的另一个端口。

像这样:

sub.website.com:2000 --> 123.45.67.891:3000 

如何使用带有mod_rewrite 的.htaccess 文件来实现这一点?

我尝试了以下方法但无济于事:

RewriteCond %{HTTP_HOST} ^sub.website.com$ [NC]
RewriteCond %{SERVER_PORT} ^2000$
RewriteRule ^(.*)$ https://123.45.67.891:3000/$1 [L,R=302]

【问题讨论】:

  • 规则看起来很简单。 “一事无成”是什么意思?你有什么错误吗?来自sub.website.com 的页面是否显示?还有什么?
  • 它根本没有正确转发端口。

标签: .htaccess mod-rewrite apache2 subdomain portforwarding


【解决方案1】:

根据您的规则,我发现HTTP_HOST 包含端口号。所以规则应该看起来像

RewriteCond %{HTTP_HOST} ^sub.website.com:2000$ [NC]
RewriteCond %{SERVER_PORT} ^2000$
RewriteRule ^(.*)$ https://123.45.67.891:3000/$1 [L,R=302]

如果你想单独测试服务器名称,你可以使用%{SERVER_NAME} @faa 在 cmets 中建议

RewriteCond %{SERVER_NAME} ^sub.website.com$ [NC]

【讨论】:

  • 感谢您的回复,仅针对服务器名称进行的测试可以正常工作,但尝试指定端口却无法正常工作。我在这里尝试使用端口 2000,但 Safari 只是告诉我页面所在的服务器没有响应。这是我的.htaccess 文件:pastebin.com/aqjwgZjb
  • @Joshua 那么虚拟主机没有设置为监听 2000 端口。您必须在虚拟主机配置中输入 Listen 2000 和 <VirtualHost *:2000>...</VirtualHost> 或 <VirtualHost 1.2.3.4:2000>...</VirtualHost>。
猜你喜欢
  • 1970-01-01
  • 2011-10-11
  • 2014-06-15
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
相关资源
最近更新 更多