Как структурировать Laravel .htaccess, чтобы он указывал прямо на общую папку и удалял index.php

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

Server Root (www)
 -laravel
  -public
   -index.php
    -controller/method... etc

Рабочий сервер не имеет корня документа, который не является общедоступным. Я развертываю это на appfog, и для этого требуется.htaccess. Это упоминается в документации Appfog: https://docs.appfog.com/languages/php

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]

Структура папок производственного сервера будет выглядеть следующим образом (она просто удаляет папку laravel):

Server Root (www)
 -public
  -index.php
   -controller/method... etc

Я хотел бы добиться этого без использования Apache httpd, только с помощью htaccess, потому что среда разработки будет постоянно меняться.

Я хотел бы иметь возможность сделать это:

  1. Визит http://localhost/laravel/X/X (где X это что-нибудь)
  2. Получить перенаправлено на http://localhost/laravel/public/index.php/X/X (с public/index.php, скрытым от URL, чтобы предотвратить дублирование URL)
  3. Визит http://example.com/X/X (где X это что-нибудь)
  4. Получить перенаправлено на http://example.com/public/index.php/X/X (с public/index.php, скрытым от URL, чтобы предотвратить дублирование URL)
  5. Запретить доступ к каталогам / файлам вне общей папки и запретить доступ к каталогам в общей папке, но не к файлам.
  6. Все без необходимости менять конфигурации между производством и разработкой

Вопрос, как мне это сделать и сколько.htaccess файлов мне нужно?

Мой прогресс до сих пор проходил через документацию laravel и это сообщение на форуме, но независимо от того, что я делаю, я получаю либо ошибки 404s, либо 500 ошибок сервера, когда просто захожу на http://localhost/laravel/

2 ответа

Вы бы поместили это в корень вашего приложения.

- application/
- public/
  - .htaccess (already provided by laravel)
- index.php/
- .htaccess (the one specified by appfog)

Все должно работать нормально.

Посмотрите на возможный вариант здесь.

Другие вопросы по тегам