Apache Mod Rewrite для Laravel

У меня есть установка Laravel на Wampserver. Каталог выглядит следующим образом:

C: \ WAMP \ WWW \ Laravel

Теперь URL-адреса выглядят следующим образом:

http://localhost/laravel/public/index.php/home/index

Поэтому я использовал следующий код htaccess

 Options +FollowSymLinks Options -indexes DirectoryIndex index.PHP RewriteEngine on RewriteCond $1 !^(index\.PHP|images|robots.txt) RewriteCond %{REQUEST_ FILENAME} !-f RewriteCond %{REQUEST_ FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L, QSA] 

Чтобы уменьшить URL-адрес

http://localhost/laravel/public/home/index

Но структура laravel настаивает на том, что все файлы приложений находятся в общей папке.

Поэтому я хотел бы знать, что мне нужно добавить (или вычесть) из файла htaccess, чтобы URL мог выглядеть так:

http://localhost/laravel/home/index

благодаря

Solutions Collecting From Web of "Apache Mod Rewrite для Laravel"

При локальном тестировании я делаю одно из двух.

  1. Создайте новый .htaccess под общим каталогом со следующим.

     <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^(.*)$ public/$1 [L] </IfModule> 
  2. Создайте новый виртуальный хост. С помощью WAMP вы можете перейти к C:\wamp\bin\apache\YOUR APACHE VERSION\conf\extra и найти файл httpd-vhosts.conf , там вы можете увидеть пример виртуальных хостов. Вот один из моих:

     <VirtualHost *:80> DocumentRoot "c:/wamp/www/laravel/public" ServerName laravel.dev ServerAlias www.laravel.dev </VirtualHost> 

    Убедитесь, что ваш файл конфигурации vhosts включен. Откройте файл httpd.conf и найдите файл vhosts , раскомментируйте строку include, если она закомментирована. Затем я открываю CLI и вводим notepad "C:\windows\system32\drivers\etc\hosts" который открывает ваш файл hosts. Под элементом, который упоминает localhost помещает ваш новый хост. Вот пример.

     127.0.0.1 laravel.dev 

    Убедитесь, что вы перезапускаете Apache и bingo, вы должны быть в состоянии перейти на http://laravel.dev и у вас не будет раздражающего общего каталога. Вот как я это достигаю, так как предпочитаю более привлекательный виртуальный хост, а не длинный URL-адрес localhost .

Надеюсь это поможет.

Наконец я понял выход. Прежде всего, мне пришлось открыть и отредактировать мой Apache httpd.conf, выбрав его из меню Wamp Aestran. Мне пришлось раскомментировать линию

#Include conf/extra/httpd-vhosts.conf

После этого я открыл файл, который находится на

<wampdirectory>/bin/apache/apache.xyz/conf/extra/httpd-vhosts.conf

затем я добавил следующие строки.

 # # Use name-based virtual hosting. # NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "C:/wamp/www" ServerName localhost Options Indexes FollowSymLinks <Directory "C:/wamp/www"> AllowOverride All Order Deny,Allow Deny from all Allow from 127.0.0.1 #If you want to allow access from your internal network # For specific ip addresses add one line per ip address #Allow from 192.168.0.100 # For every ip in the subnet, just use the first 3 numbers of the subnet #Allow from 192.168.0 </Directory> </VirtualHost> ## must be first so the the wamp menu page loads when you use just localhost as the domain name <VirtualHost *:80> DocumentRoot "C:/wamp/sites/laravel/public" ServerName laravel.dev Options Indexes FollowSymLinks <Directory "C:/wamp/sites/laravel/public"> AllowOverride All Order Deny,Allow Deny from all Allow from 127.0.0.1 #If you want to allow access from your internal network # For specific ip addresses add one line per ip address #Allow from 192.168.0.100 # For every ip in the subnet, just use the first 3 numbers of the subnet #Allow from 192.168.0 </Directory> </VirtualHost> 

Следующим шагом было изменить файл моих хостов на C: \ windows \ system32 \ drivers \ etc.

и добавил

127.0.0.1 laravel.dev

Затем перезапустил Wamp, и он сработал. Спасибо вам, ребята, за то, что указали мне в правильном направлении. Действительно ценю это

Самый простой способ, которым я работал над своей локальной средой dev, – сделать следующее:

(Предполагая, что WAMP установлен в C: \ WAMP)

Создайте следующую папку:

 c:\wamp\www\laravel 

Загрузите laravel и поместите содержимое в указанный выше каталог. Вы узнаете, что сделали это правильно, если вы можете просмотреть hxxp: // localhost / laravel / public и получить начальный экран. Однако это недостаточно. Мы хотим получить этот экран, перейдя по http://localhost/laravel

Итак, мы делаем следующее:

Создайте текстовый файл, содержащий следующее:

 Alias /laravel "c:/wamp/www/laravel/public" <Directory "c:/wamp/www/laravel/public"> Options Indexes FollowSymLinks MultiViews AllowOverride all Allow from all </Directory> 

Сохраните этот файл как laravel.conf в каталоге c: \ wamp \ alias.

Наконец, перезапустите ваш сервер.

Теперь вы сможете просматривать http://localhost/laravel

Обратите внимание, что приведенное выше строго для локальной среды разработки.

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

Почему бы не заставить mysite.dev указывать на laravel/public каталог, чтобы вы могли просто использовать http://mysite.dev каждый раз, у вас есть более чистый и более короткий URL?

Как newb для WAMP и Laravel, я немного потрудился, но получил работу virtualhost для работы с 64-битным полем WIN7PRO. В WAMPSERVER / Apache / hppd.conf в конце файла я добавил:

 NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot C:/webapp/public ServerName webapp <Directory C:/webapp/public > Options Indexes FollowSymLinks MultiViews AllowOverride all Order Deny,Allow Allow from All </Directory> </VirtualHost> <VirtualHost *:80> DocumentRoot C:/wamp/www ServerName localhost </VirtualHost> 

и я добавил:

127.0.0.1 webapp

в файл hosts. (Мне никогда не удавалось редактировать файлы vhosts, как и многие сообщения в Интернете.)

Эти изменения позволяют мне перейти в мое тестовое приложение Laravel в моем браузере через

 http://webapp (and also, via just http://127.0.0.1) 

и, чтобы добраться до всех моих других сайтов, через:

 http://localhost/devsite/whatever..