Назад | Перейти на главную страницу

.htaccess применяется не к тому домену

Я настроил свой apache так:

<VirtualHost *:80>
  ServerName www.th3falc0n.de
  ServerAlias th3falc0n.de *.th3falc0n.de
  DocumentRoot /var/www/html/th3falc0n

    <Directory /var/www/html/th3falc0n>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

</VirtualHost>

<VirtualHost *:80>
  ServerName www.lolhens.org
  ServerAlias lolhens.org *.lolhens.org
  DocumentRoot /var/www/html/lolhens

    <Directory /var/www/html/lolhens>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

</VirtualHost>

У меня есть .htaccess в / var / www / html / th3falc0n, который перенаправляет th3falc0n.de на th3falc0n.de/p/home и некоторые другие вещи. Однако эти правила также применяются к lolhens.org, что не является ожидаемым поведением. В чем я виновата? Как я могу добиться, чтобы .htaccess применялся только для th3falc0n.de?

Вывод apache2ctl -S

root@v36448:~# apache2ctl -S
VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server www.th3falc0n.de (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost www.th3falc0n.de (/etc/apache2/sites-enabled/000-default.conf:1)
                 alias th3falc0n.de
                 wild alias *.th3falc0n.de
         port 80 namevhost www.lolhens.org (/etc/apache2/sites-enabled/000-default.conf:15)
                 alias lolhens.org
                 wild alias *.lolhens.org
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

Поскольку у меня было несколько предложений переместить содержимое .htaccess в конфигурацию сайта: это не вариант, так как пользователь, управляющий lolhens.org, не должен иметь доступа к конфигурации сервера, но иметь возможность использовать .htaccess, и я хочу сохранить это согласован для всех возможных пользователей.

РЕДАКТИРОВАТЬ:

Узнав, что http://www.lolhens.org нет проблем с .htaccess, но это произойдет на http://lolhens.org Я пробовал другую такую ​​конфигурацию:

<VirtualHost *:80>
  ServerName th3falc0n.de
  ServerAlias *.th3falc0n.de
  DocumentRoot /var/www/html/th3falc0n

    <Directory /var/www/html/th3falc0n>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

</VirtualHost>

<VirtualHost *:80>
  ServerName lolhens.org
  ServerAlias *.lolhens.org
  DocumentRoot /var/www/html/lolhens

    <Directory /var/www/html/lolhens>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

</VirtualHost>

Однако результат остается прежним. www.lolhens.org работает как положено, lolhens.org - нет.

Если какой-либо контент с www.lolhens.org обслуживается из / var / www / html / th3falc0n, то файл .htaccess будет обработан, даже если пользователь запросил другой домен.

Иэн прав: поскольку у вас, по-видимому, есть доступ к файлам конфигурации, самым простым решением является удаление файла .htaccess, перемещение его директив в VirtualHost для www.th3falc0n.de и отключение .htaccess, установив AllowOverride none. Увидеть Учебник по файлу Apache htaccess.

Я только что понял, что ошибка была в кеше моего локального браузера, который сохранил перенаправление для lolhens.org. Вторая конфигурация теперь работает.