index.php лежит не в корне сайта и сайт не грузится

250
18 января 2018, 22:02

Возникла проблема с загрузкой сайта. Структура такова, что файл index.php лежит не в корне, а в папке web. Там же лежат стили, скрипты, картинки и т.д. Есть и другие src, vendor.
Так вот как сделать так, чтобы сайт грузился из web, а то он грузится только таким образом site.com/web.
Нашел способ прописать в .htaccess такие строки:

<IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteRule   ^$ web/    [L]
     RewriteRule   ((?s).*) web/$1 [L]
</IfModule>

Но тогда происходит ошибка сервера Internal Server Error. Еще пытался поменять в "www-домены" значение "индексная страница" на "web/index.php", но тогда почему то не грузятся стили. В source показано, что пути к файлами css такие site.com/style.css, а не site.com/web/style.css. Может есть еще какие-то настройки в isp manager. Я что-то не могу найти. До этого сайт лежал на другом хостинге у другого владельца, у которого я уже не могу спросить как это работает.

Структура примерно такая:

  /www/site.ru/ 
      -src 
      -vendor
      -web
          --index.php
Answer 1

Ваш нужно настроить виртуальный хост вашего сервера на папку "web". Подробнее можно узнать в документации

<VirtualHost адрес_хоста_для прослушивания:порт>
ServerName домен
ServerAlias псевдоним_домена
ServerAdmin емейл@администратора
DocumentRoot /путь/к/файлам/сайта
ErrorLog /куда/сохранять/логи/ошибок/error.log
CustomLog /куда/сохранять/логи/доступа/access.log combined
</VirtualHost>
Answer 2

Давайте сначала определимся с терминами: Корень - это самая верхняя директория, куда Вам позволяет добраться хостинг. Точка входа - это папка, которая видна всему интернету (чаще всего public_html). В данном случае, если в папке public_html и находится ваша директория web, то Вам нужно все содержимое public_html перекинуть в корень, а дальше следовать указаниям

  1. Удалите дефолтную папку, по которой должен быть доступен Ваш сайт (чаще всего это public_html)
  2. Зайдите в веб-версию консоли Вашего хостинга через панель управления и пропишите (замените имя_дирректории на соответствующий путь)

    ln -s ~/имя_директории/web ~/имя_директории/public_html

  3. Если в панели управления нет веб-консоли, то подключитесь по SSH и выполните ту же команду

Эта команда создает символьную ссылку (по сути ярлык), которые делает перенаправление на нужную папку.

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

-dat
-log
-error
-public_html
-somedir
--web

То команда ln -s ~/somedir/web ~/public_html решит Вашу проблему

А из .htaccess можете удалить эти строки, если у Вас нет конкретной рекомендации Вашего хостинга.

Answer 3

Здраствуйте ) можно решить вашу проблему с одним простым способом. Создайте в корневой директории файл .htaccess и пишите следующее в файле:

DirectoryIndex web/

и все. Все сработает

READ ALSO
Отсечь цифры до десятых и округлить

Отсечь цифры до десятых и округлить

Здравствуйтечисло с большим количеством символов после запятой

220
Записать json в файл php

Записать json в файл php

Я получаю курсы валют с сайта ПриватБанка в формате json, и мне нужно записать это в файлСделал функцию, но в файл записывает null

213
У кого то есть пример интеграции сайта с CRM через API, от а до я?

У кого то есть пример интеграции сайта с CRM через API, от а до я?

У кого то есть пример интеграции сайта с CRM через API, от а до я? Нужно подвязать формы на сайте к CRM У CRM есть открытые API https://yclientsdocs

240
Как изменить содержимое header для одной страницы

Как изменить содержимое header для одной страницы

Создал дочернюю тему, требуется что-бы только в странице singlephp отображалась картинка на шапке

199