htaccess voor Laravel
Ik zit een beetje te spelen met de htaccess van laravel en ik krijg het maar niet voor elkaar om van pagina te wisselen zonder index.php ( clean url ) in mijn url te hebben.
Wanneer ik index.php erin heb staan dan kom ik natuurlijk wel op de juiste pagina. Mijn htaccess op dit moment ziet er als volgt uit.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Options +FollowSymLinks
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Iemand ervaring hiermee en een oplossing?
Code (php)
1
2
3
2
3
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|javascript|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond $1 !^(index\.php|images|css|javascript|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Misschien werkt dit? Zo doe ik het met Codeigniter :) En heb je AllowOverride op All staan?
Op deze manier kan ik van deze link: http://localhost/index.php/register/ http://localhost/register/ maken
Gewijzigd op 22/11/2013 19:57:16 door Mebus Hackintosh
RewriteRule .* index.php/$0 [PT]
nope werkt niet en ja het staat wel aan.
Trouwens ook al een gewoon .htaccess bestand geprobeerd?
Het bestand dat ik moest aanpassen heet '000-default.conf' in de map /etc/apache2/sites-enabled
Gewijzigd op 22/11/2013 20:04:08 door Mebus Hackintosh
/public/index.php/user/create was not found on this server. en in de url natuurlijk zonder de index.php erin maar wanneer ik de index.php er in zet lukt het wel nog altijd. zowel met jou tip als deze RewriteRule ^(.*)$ index.php/$1 [L]
Toevoeging op 22/11/2013 20:07:42:
Ik werk nu lokaal op mijn iMac.
Met MAMP? Ik had geen problemen en kon direct .htaccess files gebruiken bij mij op OS X ML
Nee ik gebruik geen MAMP maar de homebrew variant
Hoe staat je root folder ingesteld in het volgende bestand: httpd.conf
http://laravel.com/docs/installation#pretty-urls al geprobeerd?
PS. Homebrew FTW!
Edit: woops. dacht dat er in je openings post iets anders stond...
De orginele werkt dus ook niet?
Geef eens een voorbeeld van de url. (in de vorm http://blabla/miauw)
PS. Homebrew FTW!
Edit: woops. dacht dat er in je openings post iets anders stond...
De orginele werkt dus ook niet?
Geef eens een voorbeeld van de url. (in de vorm http://blabla/miauw)
Gewijzigd op 22/11/2013 22:28:58 door Dos Moonen
http://localhost/~gebruikersnaam/laravelfolder/public/user/create
En dit resulteert in een 404 met de volgende melding
The requested URL /Users/username/Sites/laravelfolder/public/index.php/user/create was not found on this server.
wat wel werkt
http://localhost/~gebruikersnaam/laravelfolder/public/index.php/user/create
Maar dat moet dus zonder.
hoe ziet jouw virtual host voor apache eruit?
Misschien niet meteen de oplossing voor je probleem, maar ikzelf had helemaal geen zin meer om die dingen te scheiden als ik aan het developen ben.
Dus wat doe ik tegenwoordig:
Dan kan je met http://localhost:8000/ gewoon developen zonder al die rare fratsen waar je je nu nog niet druk over hoeft te maken. ;)
http://localhost/~gebruikersnaam/laravelfolder/public/index.php/user/create werkt.
index.php zit dus in de map /~gebruikersnaam/laravelfolder/public/
RewriteBase /~gebruikersnaam/laravelfolder/public/ zal dus nodig zijn.
of
RewriteRule ^ /~gebruikersnaam/laravelfolder/public/index.php [L]
Of je kan user dirs uit zetten, virtual hosts aan zetten en correct instellen:
Uncomment de Include regel onder "# Virtual hosts".
Mijn /private/etc/apache2/extra/httpd-vhosts.conf ziet er zo uit:
Vervolgens maak ik de map /Private/etc/apache2/virtual-hosts/ aan:
Als laatste heb ik dan een bestand in /Private/etc/apache2/virtual-hosts/ dat er zo uit ziet:
Pas aan wat je aan wilt passen.
Als laatste passen we je hosts file aan:
Voeg de volgende regel toe
ctrl + x, bevestig de wijziging door op 'y' te drukken en vervolgens op enter om de bestandsnaam te bevestigen.
Herstart apache:
Dan zou je naar example.com kunnen gaan en hoort apache je iets voor te schotelen. Wat hangt er vanaf welke map je hebt opgegeven in de virtual host.
PS. /Volumes/DATA is een NTFS partitie die ik zelf heb aangemaakt. Ik dualboot windows met bootcamp. Windows' apache kijkt naar de zelfde map. Werkt wel fijn :p
index.php zit dus in de map /~gebruikersnaam/laravelfolder/public/
RewriteBase /~gebruikersnaam/laravelfolder/public/ zal dus nodig zijn.
of
RewriteRule ^ /~gebruikersnaam/laravelfolder/public/index.php [L]
Of je kan user dirs uit zetten, virtual hosts aan zetten en correct instellen:
Uncomment de Include regel onder "# Virtual hosts".
Mijn /private/etc/apache2/extra/httpd-vhosts.conf ziet er zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
include /Private/etc/apache2/virtual-hosts/*.conf
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
include /Private/etc/apache2/virtual-hosts/*.conf
Vervolgens maak ik de map /Private/etc/apache2/virtual-hosts/ aan:
Als laatste heb ik dan een bestand in /Private/etc/apache2/virtual-hosts/ dat er zo uit ziet:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/Volumes/DATA/Sites/example.dev/htdocs/public"
ServerName example.dev
ServerAlias www.example.dev
ErrorLog "/private/var/log/apache2/example.dev-error_log"
CustomLog "/private/var/log/apache2/example.dev-access_log" common
<Directory "/Volumes/DATA/Sites/example.dev/htdocs/public">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/Volumes/DATA/Sites/example.dev/htdocs/public"
ServerName example.dev
ServerAlias www.example.dev
ErrorLog "/private/var/log/apache2/example.dev-error_log"
CustomLog "/private/var/log/apache2/example.dev-access_log" common
<Directory "/Volumes/DATA/Sites/example.dev/htdocs/public">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Pas aan wat je aan wilt passen.
Als laatste passen we je hosts file aan:
Voeg de volgende regel toe
ctrl + x, bevestig de wijziging door op 'y' te drukken en vervolgens op enter om de bestandsnaam te bevestigen.
Herstart apache:
Dan zou je naar example.com kunnen gaan en hoort apache je iets voor te schotelen. Wat hangt er vanaf welke map je hebt opgegeven in de virtual host.
PS. /Volumes/DATA is een NTFS partitie die ik zelf heb aangemaakt. Ik dualboot windows met bootcamp. Windows' apache kijkt naar de zelfde map. Werkt wel fijn :p
Gewijzigd op 23/11/2013 15:19:26 door Dos Moonen
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Options +FollowSymLinks
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
En ik wil geen vhost instellen
"ik wil geen vhost instellen"
Ok, ik snap niet waarom maar goed, dan blijven er dus twee optie over.
"Maar die rewrite doe ik nu ook al."
Echt?
Ik zie volgens mij toch echt /~gebruikersnaam/laravelfolder/public/ in dat voorbeel van je.
Het zal een van deze twee moeten worden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options -MultiViews
RewriteEngine On
RewriteBase /~gebruikersnaam/laravelfolder/public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Options +FollowSymLinks
Options -MultiViews
RewriteEngine On
RewriteBase /~gebruikersnaam/laravelfolder/public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Thanks!