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
Спасибо
Ответы
Ответ 1
При локальном тестировании я делаю одну из двух вещей.
-
Создайте новый .htaccess под общим каталогом со следующим.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
-
Создайте новый виртуальный хост. С помощью 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
.
Надеюсь, что это поможет.
Ответ 2
Наконец-то я понял выход. Прежде всего, мне пришлось открыть и отредактировать мой Apache httpd.conf, выбрав его из меню Wamp Aestran. Мне пришлось раскомментировать строку
#Include conf/extra/httpd-vhosts.conf
После этого я открыл файл, который находится на
<wampdirectory>/bin/apache/apache.x.y.z/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, и он сработал. Спасибо вам, ребята, за то, что указали мне в правильном направлении. На самом деле оцените его
Ответ 3
Самый простой способ, которым я работал над своей локальной средой 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.
Наконец, перезапустите wampserver.
Теперь вы можете перейти на http://localhost/laravel
Обратите внимание, что это строго для локальной среды разработки.
Ответ 4
В конце концов вы получите код и свою общую папку, находящуюся в том же месте, что большинство людей не рекомендуют. Я предлагаю вам воспользоваться преимуществами использования локального веб-сервера.
Почему бы не сделать mysite.dev
указателем на каталог laravel/public
, чтобы вы могли просто использовать http://mysite.dev
каждый раз, у вас есть более чистый и более короткий URL-адрес?
Ответ 5
Как 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..