.htaccess 重定向适用于 IP,但不适用于域名

.htaccess 重定向适用于 IP,但不适用于域名

我有以下 .htaccess 文件:

RewriteEngine   on
RewriteBase     /

RewriteRule     ^(/?)dir/?$            $1dir/subdir           [L]
RewriteRule     ^(/?)subdir2/?$        $1dir/subdir/subdir2   [L]

如果我输入域名的 IP,重定向可以正常工作,但是输入域名/目录根本不会重定向我,而是显示目录的内容。

另一个问题:正如我所说,使用 IP 进行重定向可以正常工作。但是,尽管未设置“R”标志,但 URL 框中的 URL 会发生变化。IP/dir 更改为 IP/dir/subdir。为什么?

编辑(11:20 GMT+1):不太确定这是否有任何相关性,但在今天之前,服务器没有域名。我刚刚购买了一个域名并设置了指向该服务器的所有名称服务器。由于我可以访问该页面并且它显示了 /dir 文件夹的内容,因此我认为我没有弄乱那里的任何东西。

编辑(12:51 GMT+1):apachectl -S 的输出:

apache2: Could not reliably determine the server's fully qualified domain name, using 0.0.10.188 for ServerName
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
     default server 0.0.10.188 (/etc/apache2/sites-enabled/000-default:1)
     port 80 namevhost 0.0.10.188 (/etc/apache2/sites-enabled/000-default:1)
Syntax OK

编辑(19:26 GMT+1):找到问题了。问题是我没有设置服务器名称,并且 ports.conf 和 httpd.conf 中有重复项,两者都处于“监听”状态。感谢您指出“apachectl -S”命令。剩下一个神秘的问题:为什么 URL 会改变,尽管没有设置 R 标志。永远是个谜...

答案1

您需要显示更多信息;httpd -S 输出什么?

这些规则放在哪里?

相关内容