Разместить основной домен из подпапки

Разместить основной домен из подпапки

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

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

  • public_html
    • домены
      • вебсайтодин
      • вебсайтдва
      • вебсайттри
      • ...

Это позволяет моим сайтам выглядеть красиво и аккуратно. Единственной проблемой было заставить мой "основной домен" вписаться в эту систему. Похоже, мой основной домен каким-то образом привязан к моей учетной записи (или к 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 выглядит правильно? Мне просто нужно сделать так, чтобы мой основной домен вел себя как дополнительный домен, а его подкаталоги соответствовали правилам перенаправления.

решение1

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

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

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

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

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

решение2

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

^(www.)?domain.tld$

Вам необходимо иметь

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

Связанный контент