This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/includes/kohana/modules/userguide/guide/nl/tutorials.removeindex.md
2011-05-03 09:49:01 +10:00

3.0 KiB

index.php verwijderen uit de URL

Om uw URLs proper te houden, wil je hoogtswaarschijnlijk je applicatie kunnen benaderen zonder /index.php/in uw URL te gebruiken. Er zijn twee stappen omindex.php` te verwijderen uit de URL.

  1. Het bootstrap bestand aanpassen
  2. Herschrijven van URL's instellen

Configuratie van de Bootstrap

Het eerste dat je moet veranderen is de index_file instelling van [Kohana::init]:

Kohana::init(array(
    'base_url'   => '/myapp/',
    'index_file' => FALSE,
));

Nu zullen alle links die gegeneerd worden met [URL::site], [URL::base] en [HTML::anchor] niet meer "index.php" gebruiken in de URL. Alle gegenereerde links zullen starten met /myapp/ in plaats van /myapp/index.php/.

URL Herschrijven

Het herschrijven van URL kan verschillen, naargelang je web server.

Apache

Hernoem example.htaccess naar .htaccess en verander de volgende regel code:

RewriteBase /kohana/

Dit moet gelijk zijn met de base_url instelling van [Kohana::init]:

RewriteBase /myapp/

In de meeste gevallen is dit het enige dat je moet veranderen.

Er loopt iets fout!

Als je een "Internal Server Error" of "No input file specified" error krijgt, probeer dan hetvolgende te veranderen:

RewriteRule ^(?:application|modules|system)\b - [F,L]

Door enkel een slash te gebruiken:

RewriteRule ^(application|modules|system)/ - [F,L]

Als het nog steeds niet werkt, probeer dan hetvolgende te veranderen:

RewriteRule .* index.php/$0 [PT]

Naar iets simpeler:

RewriteRule .* index.php [PT]

Nog steeds niet loopt het fout!

Als je nog steeds fouten krijgt, controleer dan zeker dat je host wel URL mod_rewrite ondersteund. Als je de Apache configuratie kunt aanpassen, voeg dan deze lijnen toe aan de configuratie, meestal in httpd.conf:

<Directory "/var/www/html/myapp">
    Order allow,deny
    Allow from all
    AllowOverride All
</Directory>

NGINX

Het is moeilijk om voorbeelden te geven van een nginx configuratie, maar hier is een voorbeeld voor een server:

location / {
    index index.php index.html index.htm;
    try_files $uri $uri/ index.php$uri?$args;
}

location ~ ^(.+\.php)(.*)$ {
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    fastcgi_param  SCRIPT_FILENAME    $document_root/$fastcgi_script_name;
    fastcgi_param  PATH_INFO          $fastcgi_path_info;

    include fastcgi.conf;

    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
}

Er zijn twee dingen te melden: het gebruik van try_files en fastcgi_split_path_info.

[!!] Dit in de veronderstelling dat je PHP draait als een FastCGI server op poort 9000 en dat je nginx v0.7.31 of later gebruikt.

Als je problemen hebt om dit te laten werken, zet dan het deub level logging aan in nginx en controleer de toegangs- en foutenlogs.