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

Основной домен хоста из подпапки

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

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

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

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

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

www.yourmaindomain.com/images/

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

www.yourmaindomain.com/domains/yourmaindomain/images/

Он по-прежнему показывает правильную страницу «Индекс / изображения» и показывает список всех моих изображений.

Вот пример моего файла .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? Мне просто нужно сделать так, чтобы мой основной домен вел себя как дополнительный домен, а его подкаталоги соответствовали правилам перенаправления.

Я бы назвал мошенником DirectorySlash в теме.

  1. Это происходит только с каталогами?
  2. Это происходит только тогда, когда нет конечной косой черты (т.е. /images идет в /domain/yourdomain/images/, но /images/ все в порядке)?

В этом случае есть 3 варианта:

  1. Убедитесь, что все ссылки имеют косую черту в конце (/)
  2. Устанавливать DirectorySlash off (приведет вас к двойным страницам / каталогам, что с точки зрения SEO не очень хорошо).
  3. Попробуйте добавить RewriteRule незадолго до вашего последнего index.html one: (придумал на лету, не знаю, сработает ли)

    RewriteCond %{REQUEST_FILENAME} -d  
    RewriteCond %{REQUEST_FILENAME} !/$  
    RewriteRule ^(.*) $1/  
    

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

^(www.)?domain.tld$

вам нужно будет иметь

^(www\.)?domain\.tld$