У меня есть подкаталог abc
в корне документа /var/www/html
Я хочу иметь возможность запускать любой файл any_file.html
в подкаталоге, набрав в браузере:
localhost/any_file
вместо того localhost/abc/any_file.html
или my_domain.com/any_file
вместо того my_domain.com/abc/any_file.html
Я пробовал писать в httpd.conf
:
<Directory "/var/www/html/abc">
RewriteEngine On
RewriteBase /
RewriteRule %{REQUEST_FILENAME} %{REQUEST_FILENAME}\.html
</Directory>
Но не работает. Options FollowSymLinks
активируется в <Directory>
так что я считаю, что мне не нужно было бы писать это снова. Кто-нибудь знает, почему и как это решить? Спасибо.
Обновить: У меня есть другой подкаталог efg
к которому мне нужно иметь доступ через localhost.
При объявлении Vhost для домена нужно добавить:
<VirtualHost *:80>
DocumentRoot /var/www/html/abc
<Directory />
*your options*
</Directory>
</VirtualHost>
Теперь твой /
будет /var/www/html/abc
Если структура вашего документа такая:
/
-abc
-edf
Теперь вы по умолчанию получите доступ к папке abc. Если вы также хотите получить доступ к папке edf, у вас есть два варианта:
Создание символических ссылок довольно просто (команда ln). Чтобы создать еще один виртуальный хост, вы можете создать новый файл в своем sites-available/
папку или добавьте эти записи внизу своего sites-available/default
DocumentRoot / var / www / html / efg ServerName efg.mydomain.com
если вы создали новый файл, вам нужно запустить:
a2ensite filename
и перезапустите apache. Теперь, когда вы посещаете поддомен (не забудьте добавить его на свой DNS-сервер). Он будет использовать efg в качестве корневого каталога документов.
Вы можете изменить директиву
DocumentRoot /var/www/html
быть
DocumentRoot /var/www/html/abc
в соответствующем виртуальном хосте.
Другой вариант - использовать mod-rewrite для перезаписи каждого пути, начинающегося с /abc
быть без этого.