У меня есть следующий файл .htaccess:
RewriteEngine on
RewriteBase /
RewriteRule ^(/?)dir/?$ $1dir/subdir [L]
RewriteRule ^(/?)subdir2/?$ $1dir/subdir/subdir2 [L]
Перенаправление работает нормально, если я ввожу IP-адрес домена, но ввод имени домена / dir вообще не перенаправляет меня, а вместо этого показывает мне содержимое каталога.
Другой вопрос: как я уже сказал, перенаправление с 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. Навсегда загадка ...
Вам нужно показать больше информации; что выводит httpd -S?
Где размещены эти правила?