Apache Mod Rewrite For Laravel
Solution 1:
When testing locally I do one of two things.
-
Create a new .htaccess below the public directory with the following.
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^(.*)$ public/$1 [L] </IfModule>
-
Create a new virtual host. With WAMP you can navigate to
C:\wamp\bin\apache\YOUR APACHE VERSION\conf\extra
and find yourhttpd-vhosts.conf
file, in there you can see example virtual hosts. Here's one of mine:<VirtualHost *:80> DocumentRoot "c:/wamp/www/laravel/public" ServerName laravel.dev ServerAlias www.laravel.dev </VirtualHost>
Make sure that your vhosts configuration file is being included. Open up your
httpd.conf
file and search for thevhosts
file, uncomment the include line if it's commented out. Then I open the CLI and enternotepad "C:\windows\system32\drivers\etc\hosts"
which opens up your hosts file. Underneath the item that mentionslocalhost
place your new host. Here's an example.127.0.0.1 laravel.dev
Make sure you restart Apache and bingo, you should be able to navigate to
http://laravel.dev
and you won't have any annoying public directory. This is how I achieve it, as I prefer the nicer looking virtual host rather then a long windedlocalhost
URL.
Hope this helps.
Solution 2:
I finally figured a way out. First of all, I had to open and edit my Apache httpd.conf by selecting it from the Wamp Aestran tray menu. The I had to uncomment the line
#Include conf/extra/httpd-vhosts.conf
After that, I opened the file which is located at the
<wampdirectory>/bin/apache/apache.x.y.z/conf/extra/httpd-vhosts.conf
then I added the following lines.
#
# 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>
The next step was to edit my hosts file at C:\windows\system32\drivers\etc
and added
127.0.0.1 laravel.dev
Then restarted Wamp and it worked. Thanks to you guys for pointing me in the right direction. Really Appreciate it
Solution 3:
The easiest way I got this working on my local dev environment was to do the following:
(Assuming you have WAMP installed in C:\WAMP)
Create the following folder:
c:\wamp\www\laravel
Download laravel and put the contents in the above directory. You will know you have done it right if you can browse to hxxp://localhost/laravel/public and get the opening screen. However, this isn't good enough. We want to get that screen by going to http://localhost/laravel
So then we do the following:
Create a textfile containing the following:
Alias /laravel "c:/wamp/www/laravel/public"
<Directory "c:/wamp/www/laravel/public">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Allow from all
</Directory>
Save this file as laravel.conf
in the c:\wamp\alias directory.
Finally, restart your wampserver.
You should now be able to surf to http://localhost/laravel
Note that the above is strictly for a local development environment.