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

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

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

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

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 и этому сообщению на форуме, но независимо от того, что я делаю, я продолжаю получать 404 или 500 ошибок сервера, когда я просто перехожу к http://localhost/laravel/


person CMCDragonkai    schedule 28.11.2012    source источник


Ответы (2)


Взгляните на возможный вариант здесь.

person mogetutu    schedule 28.11.2012
comment
Здравствуйте, Могетуту, ваш ответ не отвечает на мой вопрос. Я не могу использовать виртуальный хост. - person CMCDragonkai; 29.11.2012
comment
Я совершенно неправильно понял ваш вопрос, попробуйте эту строку в ur .htaccess ссылка - person mogetutu; 04.12.2012

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

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

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

person Jürgen Paul    schedule 16.05.2013