Изменить файл htaccess для двух сайтов - PullRequest
1 голос
/ 04 января 2011

Мой веб-хост указывает мое «основное» доменное имя на корневую папку www.Веб-файлы для этого сайта находятся в папке «www / app / webroot».В настоящее время сайт запущен и работает с использованием следующего в файле htaccess:

RewriteBase /
RewriteEngine on
RewriteRule    ^$ app/webroot/    [L]
RewriteRule    (.*) app/webroot/$1 [L] 

Я пытаюсь запустить сайт разработчика для того же сайта.Я сделал папку с именем "dev" в папке www.Итак, веб-файлы для этой папки находятся в: «www / dev / app / webroot» У меня есть поддомен, указывающий на папку dev.Когда я использую тот же htaccess, что и выше, в папке dev, он не работает, потому что (я считаю) он наследует настройки из корневой папки www.Когда страница загружается, она просто появляется пустой.Как мне настроить файлы htaccess для обоих сайтов?

Заранее спасибо за любую помощь!Я, очевидно, новичок в этом деле.

Ответы [ 3 ]

6 голосов
/ 04 января 2011

Итак, мы попытаемся почистить вещи: -)

Избегайте использования .htaccess. Все настройки в .htaccess в каталоге / foo / bar могут быть установлены в конфигурации apache в качестве параметра каталога (.haccess полезен, если вы предоставляете ограниченный доступ к apache conf, если у вас есть сервер, не используйте его).

<Directory /foo/bar>(...)</Directory>

Затем вы можете получить доступ к своим сайтам с помощью именованных виртуальных хостов. Убедитесь, что у вас есть эта опция:

NameVirtualHost *:80

Когда у вас есть хорошие вещи могут начаться. Это будет ваш виртуальный хост для вашего первого приложения:

<VirtualHost *:80>
    ServerName app
    ServerAlias www.app.somwhere.com
    ServerAlias app.somwhere.com
    DocumentRoot /www/app/webroot
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /www/app/webroot>
        Options Indexes FollowSymLinks
        # this prevent.htaccess reading, remove if you want .htaccess
            AllowOverride None
            # allow web access 
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

Большинство настроек apache можно определить здесь. Только для вашего первого приложения. Apache будет обслуживать эту конфигурацию для всех запросов, выполненных для имени сайта «app», или «www.app.somwhere.com», или «app.somwhere.com». Вы можете определить много псевдонимов ( ServerAlias ​​). И только одно имя ( ServerName ).

Затем, если вы зайдете в браузер и введете http://app/, ваш браузер не найдет сервер, поэтому установите его в вашем / etc / hosts. Это то, что каждый, кто хочет получить доступ к вашему приложению, должен иметь в файле hosts, пока вы не получите реальный DNS (при условии, что ваше первое приложение - app.somwhere.com, а второе foo.somwhere.com и 92.128.52.226 - ваш внешний IP) :

127.0.0.1 app.somwhere.com app foo foo.somewhere.com
92.128.52.226 app.somwhere.com app foo foo.somewhere.com

А теперь давайте добавим еще один виртуальный хост для вашего второго приложения:

<VirtualHost *:80>
    ServerName foo
    ServerAlias www.foo.somwhere.com
    ServerAlias foo.somwhere.com
    DocumentRoot /www/foo/webroot
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /www/foo/webroot>
        Options Indexes FollowSymLinks
        # this prevent.htaccess reading, remove if you want .htaccess
            AllowOverride None
            # allow web access 
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

и т. Д. Не забудьте перезапустить свой Apache. Нет правила перезаписи. Хорошие виртуальные хосты - это первый шаг хорошей конфигурации, вы сможете определять правила, каталог или местоположение для каждого используемого имени. Даже php-конфигурация может быть установлена ​​для каждого виртуального хоста с помощью php_value вместо глобального общего доступа на php.ini.

тип

apache2 -S

чтобы получить список ваших виртуальных хостов, вы увидите, что первый - «по умолчанию», если apache не понимает имя запрошенного сайта, он будет обслуживать этот по умолчанию (так что вы можете конкретный виртуальный хост сверху для обработки этих случаев).

0 голосов
/ 04 января 2011

Может быть, вам следует удалить строку «RewriteBase /» в .htaccess в папке dev?

0 голосов
/ 04 января 2011

Попробуйте добавить dev / к путям в строках 3 и 4 к вашему dev .htaccess.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...