Подтвердить что ты не робот

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

Спасибо

4b9b3361

Ответ 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..