使用 .htaccess 更改端口和主机 [关闭]
Posted
技术标签:
【中文标题】使用 .htaccess 更改端口和主机 [关闭]【英文标题】:Change port and host using .htaccess [closed] 【发布时间】: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
的页面是否显示?还有什么?
它根本没有正确转发端口。
【参考方案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>
。以上是关于使用 .htaccess 更改端口和主机 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
是否可以更改 htaccess 中的 $_SERVER['HTTP_HOST'] ? [关闭]
如何在同一(但正在更改)IP 地址上处理 2 个不同主机的 ssh 主机密钥验证? [关闭]
根据 .htaccess 中的域/子域更改 DirectoryIndex