我有以下 .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 输出什么?
这些规则放在哪里?