web-dev-qa-db-fra.com

Apache Mod Rewrite Pour Laravel

J'ai une installation de Laravel sur Wampserver. Le répertoire est le suivant:

C:\wamp\www\laravel

Maintenant, les URL sont comme ça: 

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

J'ai donc utilisé le code htaccess suivant 

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]

Pour réduire l'URL à 

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

Mais le framework laravel insiste sur le fait que tous les fichiers de l'application résident dans le dossier public.

Je voudrais donc savoir ce que je dois ajouter (ou soustraire) au fichier htaccess afin que l'URL puisse ressembler à

http://localhost/laravel/home/index

Merci

11
Ody

Lorsque je teste localement, je fais l’une des deux choses suivantes.

  1. Créez un nouveau fichier .htaccess sous le répertoire public avec les éléments suivants.

    <IfModule mod_rewrite.c>
        RewriteEngine on
    
        RewriteRule ^(.*)$ public/$1 [L]
    </IfModule>
    
  2. Créez un nouvel hôte virtuel. Avec WAMP, vous pouvez accéder à C:\wamp\bin\Apache\YOUR Apache VERSION\conf\extra et trouver votre fichier httpd-vhosts.conf. Vous y trouverez des exemples d’hôtes virtuels. Voici l'un des miens:

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

    Assurez-vous que votre fichier de configuration vhosts est inclus. Ouvrez votre fichier httpd.conf et recherchez le fichier vhosts, décommentez la ligne d'inclusion si elle est commentée. Ensuite, j'ouvre le CLI et saisis notepad "C:\windows\system32\drivers\etc\hosts" qui ouvre votre fichier hosts. Sous l'élément qui mentionne localhost, placez votre nouvel hôte. Voici un exemple.

    127.0.0.1  laravel.dev
    

    Assurez-vous de redémarrer Apache et le bingo. Vous devriez pouvoir naviguer jusqu'à http://laravel.dev et vous n'aurez aucun répertoire public ennuyeux. Voici comment je l'obtiens, car je préfère le plus bel hôte virtuel à la place d'une longue URL localhost.

J'espère que cela t'aides.

24
Jason Lewis

J'ai finalement trouvé un moyen de sortir. Tout d'abord, je devais ouvrir et éditer mon Apache httpd.conf en le sélectionnant dans le menu du bac Wamp Aestran. Je devais décommenter la ligne

#Include conf/extra/httpd-vhosts.conf

Après cela, j’ai ouvert le fichier qui se trouve dans le répertoire 

<wampdirectory>/bin/Apache/apache.x.y.z/conf/extra/httpd-vhosts.conf

puis j'ai ajouté les lignes suivantes.

#
# 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>

L'étape suivante consistait à modifier mon fichier hosts à l'emplacement C:\windows\system32\drivers\etc.

et ajouté 

127.0.0.1 laravel.dev

Puis redémarré Wamp et cela a fonctionné. Merci à vous les gars de m'avoir dirigé dans la bonne direction. J'apprécie beaucoup

4
Ody

La façon la plus simple de travailler sur mon environnement de développement local était de procéder comme suit:

(En supposant que WAMP soit installé dans C:\WAMP)

Créez le dossier suivant:

c:\wamp\www\laravel

Téléchargez laravel et mettez le contenu dans le répertoire ci-dessus. Vous saurez que vous avez bien fait si vous pouvez naviguer vers hxxp: // localhost/laravel/public et obtenir l'écran d'accueil. Cependant, cela ne suffit pas. Nous voulons obtenir cet écran en allant à http://localhost/laravel 

Alors nous faisons ce qui suit:

Créez un fichier texte contenant les éléments suivants:

Alias /laravel "c:/wamp/www/laravel/public" 

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

Enregistrez ce fichier sous le nom laravel.conf dans le répertoire c:\wamp\alias.

Enfin, redémarrez votre serveur Wampserver.

Vous devriez maintenant pouvoir naviguer sur http://localhost/laravel

Notez que ce qui précède est strictement destiné à un environnement de développement local.

1
Relaxing In Cyprus

Vous allez vous retrouver avec votre code et votre dossier public résidant au même endroit, ce que la plupart des gens ne recommandent pas. Je vous suggère de tirer parti de l'utilisation d'un serveur Web local.

Pourquoi ne pas faire pointer mysite.dev vers le répertoire laravel/public pour pouvoir simplement utiliser http://mysite.dev à chaque fois, vous avez également une URL plus propre et plus courte?

0
Jürgen Paul

En tant que nouveau venu chez WAMP et Laravel, j’ai eu du mal à réussir, mais j’ai réussi à faire en sorte que le serveur virtualhost fonctionne sur ma boîte WIN7PRO 64 bits. Dans WAMPSERVER/Apache/hppd.conf à la fin du fichier, j'ai ajouté:

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> 

et j'ai ajouté: 

127.0.0.1 webapp 

dans le fichier hosts. (Je n'ai jamais réussi à éditer les fichiers vhosts, comme le suggéraient de nombreux messages sur le Web.)

Ces modifications me permettent d’accéder à mon application de test Laravel dans mon navigateur via

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

et, pour accéder à tous mes autres sites, via:

http://localhost/devsite/whatever..
0
Ralph Frost