LINUX.ORG.RU
решено ФорумAdmin

несложный вопрос про apache


0

0

Настроен вируальный хост.

<VirtualHost *:80>
    ServerAdmin superadmin@gmail.com
    ServerName mysupersite.ru
    ServerAlias www.mysupersite.ru
    DocumentRoot /srv/www/vhosts/mysupersite

Как и должно быть, перенаправляет запросы типа

http://www.mysupersite.ru/about.html
в директорию /srv/www/vhosts/mysupersite.

Хочу сделать, чтобы туда же отправлялись все запросы вида http://www.mysupersite.ru/dirname/about.html

Сделал так, но тщетно:

<VirtualHost *:80>
    ServerAdmin superadmin@gmail.com
    ServerName mysupersite.ru
    ServerAlias www.mysupersite.ru/dirname
    ServerAlias www.mysupersite.ru/dirname/
    ServerAlias www.mysupersite.ru
    DocumentRoot /srv/www/vhosts/mysupersite

Господа, подскажите, пожалуйста, что погуглить?

upd вижу что можно сделать симлинк но хочется решить это средствами самого апача.

Итого сделал симлинк на . под названием dirname в директории /srv/www/vhosts/mysupersite, и вроде оно работает.

Не устраивает, что так как в движке сайта все ссылки относительны, то дурацкий dirname маячит во всех ссылках сайта, если прийти на него по запросу http://www.mysupersite.ru/dirname/index.html.

mclaudt ()
Ответ на: комментарий от mydoom

Большое спасибо, добавил Alias /dirname /srv/www/vhosts/mysupersite в <VirtualHost *:80> и удалил симлинк - все работает точно так же как и с симлинком.

Однако осталась одно неудобство:

так как в движке сайта все ссылки относительны, то дурацкий dirname маячит во всех ссылках сайта, если прийти на него по запросу http://www.mysupersite.ru/dirname/index.html.

Насколько я понимаю, устранить его способен лишь редирект.

mclaudt ()
Ответ на: комментарий от Komintern

Осилил.

<VirtualHost *:80> 
    ServerAdmin superadmin@gmail.com 
    ServerName mysupersite.ru 
    ServerAlias www.mysupersite.ru 
    DocumentRoot /srv/www/vhosts/mysupersite 
    RewriteEngine On
    RewriteRule ^/dirname/(.*) /$1 [R]

Все работает как часы. И dirname не маячит теперь. Всем спасибо.

mclaudt ()
Ответ на: комментарий от dimon555

В точку, спасибо.

Кстати в opensuse mod_rewrite по дефолту отключен. Решение тут:

# Edit the file /etc/sysconfig/apache2 as root:

1. search for APACHE_MODULES, you should find a line like this APACHE_MODULES=«suexec access actions alias auth auth_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif userdir ssl php4» 2. Add rewrite to the content in the list between the " 3. Save the changes and quit

# run SuSEconfig to update the apache configuration files

mclaudt ()
Ответ на: комментарий от mclaudt

Можно сделать 404.php с разбором запроса и перенаправлением, по сути замена mod_rewrite. Такое решение используется на хостингах без последнего.

Bad_Habit ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.