我知道标题很糟糕,但无法用几句话来解释它。
我的问题如下...
服务器域名是 -
username.dyndns.org:9999
我在我的托管服务器上设置了带有 CNAME 的子域名。
trac.mydomain.com -> username.dyndns.org
svn.mydomain.com -> username.dyndns.org
因此 trac/svn url 是:
trac.mydomain.com:9999/trac
svn.mydomain.com:9999/svn/repos
我想将网址缩短为svn.mydomain.com:9999 and trac.mydomain.com:9999
我该怎么做?我有哪些选择?
(不幸的是,我被告知无法将路径放入 CNAME,否则我只会让 trac.mydomain.com 指向 username.dyndns.org:9999/trac)
我能想到的 1 种最佳方法是使用虚拟主机,并为 svn 和 trac 使用不同的端口。但我想知道是否还有其他解决方案。
答案1
更新(仔细阅读问题后)
在您的 httpd.conf 文件中...
...确保出现类似于以下内容的行(注意,如果您拥有较新的 Linux 发行版之一,他们会采用疯狂/半脑死亡的目录链接方案来启用和禁用模块,如果是这种情况,您必须查阅您的发行版的文档)。
LoadModule rewrite_module libexec/apache22/mod_rewrite.so
...然后,在文件的后面某个地方,你应该有某种组织/结构,将类似的指令分组在一起,并将类似这样的行放在一起:
<IfModule rewrite_module>
RewriteEngine on
RewriteCond %{HTTP_HOST} trac.example.com
RewriteRule (.*) /trac$1
RewriteCond %{HTTP_HOST} svn.example.com
RewriteRule (.*) /svn/repos$1
</IfModule>
笔记
如果您在 Apache 服务器上有其他未提及的内容,这可能会破坏它。
答案2
您可以创建两个虚拟主机 (可以使用相同的端口)与mod_rewrite。