Размещать основной домен из подпапки - PullRequest
4 голосов
/ 08 июня 2010

У меня проблема с тем, что подкаталог действует как public_html для моего основного домена, и я получаю решение, которое работает и с подкаталогами этих доменов.

Фон

Мой хостинг позволяет мне размещать несколько сайтов, которые прекрасно работают. Я установил подпапку в моем каталоге ~ / public_html / с именем / domains / , где я создаю папку для каждого отдельного веб-сайта. Структура папок на моем сервере выглядит примерно так:

  • public_html
    • домены
      • websiteone
      • websitetwo
      • websitethree
      • ...

Это делает мои сайты красивыми и аккуратными. Единственная проблема заключалась в том, чтобы заставить мой «основной домен» вписаться в эту систему. Кажется, мой основной домен каким-то образом привязан к моей учетной записи (или к Apache, или к чему-то еще), поэтому я не могу изменить «корень документа» этого домена. Я могу определить корни документа для любых других доменов («Addon Domains»), которые я добавляю в cPanel без проблем. Но основной домен другой.

проблема

Мне сказали отредактировать файл .htaccess, чтобы перенаправить основной домен в подкаталог. Казалось, что это прекрасно работает, и мой сайт отлично работает на домашней странице / странице индекса.

Проблема, с которой я сталкиваюсь, заключается в том, что, если я пытаюсь перемещаться по своему браузеру, чтобы сказать папку с изображениями (только для примера) моего основного сайта, например:

www.yourmaindomain.com / изображения /

тогда он, кажется, игнорирует перенаправление и показывает весь каталог сервера в URL, например:

www.yourmaindomain.com / домены / yourmaindomain / изображения /

На самом деле он по-прежнему показывает правильную страницу «Index of / images» и показывает список всех моих изображений. Проблема в «симпатичном» URL.

Пример моего .htaccess

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteCond %{REQUEST_URI} !^/domains/yourmaindomain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domains/yourmaindomain/$1

RewriteCond %{HTTP_HOST} ^(www.)?yourmaindomain.com$
RewriteRule ^(/)?$ domains/yourmaindomain/index.html [L]

Правильно ли выглядит этот файл htaccess? Мне просто нужно сделать так, чтобы мой основной домен вел себя как домен аддона, а его подкаталоги придерживались правил перенаправления.

Ответы [ 2 ]

1 голос
/ 08 июня 2010

Не используйте для этого mod_rewrite, для этого используйте виртуальные хосты . Я не буду объяснять это здесь подробно, вы найдете всю необходимую информацию по ссылке выше. (Подсказка: вероятно, вам понадобятся имена, основанные на имени.)

Вы, вероятно, хотите переместить свои вещи из ~/public_html/ в более общее место, например /var/www/ или /srv/www

Кроме того: Не использовать .htaccess файлы на производстве .

0 голосов
/ 21 мая 2016

У меня все организовано так же, как и у тебя. Была такая же проблема с моим основным доменом. Этот .htaccess работает для меня и даже решает проблему с URL.

# .htaccess main domain to subdirectory redirect 

RewriteEngine on 
# Change example.com to be your main domain. 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
# Change 'subdirectory' to be the directory you will use for your main domain. 
RewriteCond %{REQUEST_URI} !^/subdirectory/ 
# Don't change the following two lines. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# Change 'subdirectory' to be the directory you will use for your main domain. 
RewriteRule ^(.*)$ /subdirectory/$1 
# Change example.com to be your main domain again. 
# Change 'subdirectory' to be the directory you will use for your main domain 
# followed by / then the main file for your site, index.php, index.html, etc. 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ subdirectory/ [L]
...