我可以使用 mod_rewrite 将 forum.mydomain.org 重写为 mydomain.org/forum/ 吗?
因为我无法让子域名正常工作
- 更新 -
抱歉,克里斯,你的答案不起作用。
我的域名有一个名为 forum 的子域名,其 a 记录与我的 ip 有关
我的 Hosts 文件:
127.0.0.1 localhost
127.0.0.1 forum
httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "c:/wamp/www"
ServerName localhost
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "c:/wamp/www/forum"
ServerName forum
ErrorLog "logs/your_own-error.log"
CustomLog "logs/your_own-access.log" common
</VirtualHost>
答案1
是的,你可以,但你不需要。只需使用重定向:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName forum.mydomain.org
ErrorLog "logs/your_own-error.log"
CustomLog "logs/your_own-access.log" common
Redirect Permanent http://www.mydomain.org/forum/
</VirtualHost>
看了你发布的配置,有几点需要注意,
- 您需要将 NameVirtualHost 设置为 *:80,以使您的配置生效
- “forum.mydomain.org”目前无法使用,因为您没有为其设置虚拟主机条目。您需要添加类似上述的块。
可能发生的情况是,当您尝试访问 forum.mydomain.org 时,它不匹配任何 VirtualHost(因为它未定义)。因此,apache 使用默认 VirtualHost,我相信这是您定义的第一个 VirtualHost。
答案2
首先,是的,使用重定向是可能的,但更重要的是,为什么您无法让子域名正常工作?您遇到了什么问题?
再详细一点,我就能帮您找到最好的解决方案。
直流
如果您收到“禁止”信息,则可以排除 DNS 问题。您似乎遇到了配置问题。很可能您没有定义默认页面,并且花式索引被禁用。
尝试将以下内容添加到 httpd.conf
<IfModule mod_autoindex.c>
IndexOptions FancyIndexing
</ifModule>
并确保 mod_autoindex 已加载
查看子域的虚拟服务器配置。将其与主域的虚拟服务器配置进行比较。
请记住,虚拟服务器会覆盖主配置,换句话说,如果在主配置部分(任何外部内容)中定义了某些内容,它将对您的虚拟主机保持有效。因此,请在 httpd.conf 的主要部分中更改它,或将其添加到您的虚拟主机。
也许如果你发布你的配置(只是相关部分,例如虚拟服务器),我们可以建议修改
直流
您的虚拟服务器配置看起来不错。
在没有看到更多配置的情况下,我大胆猜测问题出在论坛软件上。如果您可以通过 localhost/forum/index.php 进入论坛,但不能通过 forum/index.php 进入,那么我会说论坛软件配置为使用错误的域名。可能它被设置为使用 localhost 而不是 forum 作为域名。也可能它还被配置成使用目录 /forum/ 而不是根文件夹
这只是猜测,因为如果不仔细观察就很难确定确切的原因。
如果您创建一个名为 /forum/test.html 的文件,您可以使用它来访问它http://论坛/test.html?
您可能需要将所有 .htaccess 文件重命名为 disabled.htaccess,以免它们造成干扰。重命名路径中的所有 .htaccess 文件,例如:即使 C:\wamp\www 中的一个文件(如果存在)
直流