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

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

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

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

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

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

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

www.yourmaindomain.com/images/

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

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

Он по-прежнему показывает правильную страницу "Index of /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 выглядит правильно? Мне просто нужно сделать так, чтобы мой основной домен вел себя как аддон-домен, а его подкаталоги придерживались правил перенаправления.

2 ответа

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

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

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

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

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

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

^(www.)?domain.tld$

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

^(www\.)?domain\.tld$
Другие вопросы по тегам