Fichier htaccess et erreur 404

Mammouth du PHP | 725 Messages

02 janv. 2014, 13:46

Bonjour,

J'ai un fichier htaccess, qui reecris les URL, quand je clique sur un lien, il affiche un erreur 404, ce n'est pas celle personnalisee, le mod_rewrite est active:

Code : Tout sélectionner

# a2enmod rewrite Module rewrite already enabled
htaccess
# Erreur 404 personnalisee
ErrorDocument 404 /Error/404.php

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^(\w+)\.html$ index.php?rub=$1 [L]
index.php
// des codes

require_once 'genPage.php';

// des codes

require_once 'site.php';

genPage.php:

Quand je clique sur un lien par exemple: http://localhost/Cars.html, il affiche erreur 404 (ce n'est pas celle personnalisee)
<?php

$rub 	= Isset($_GET['rub'])	? strip_tags($_GET['rub'])                  : $rub      = Null;

switch ($rub)
{
    case 'Cars':
        $this_page = 'cars';
    break;


    default:
        $this_page = 'welcome';
    break;

} // end switch ($rub)

?>
site.php:
<?php
if(file_exists($this_page.'.php')){
    require_once $this_page.'.php';
} else {
 echo 'error'   ;
}            
?>
Merci a vous

ViPHP
ViPHP | 2577 Messages

02 janv. 2014, 13:54

LA première chose à faire est de regarder dans la log apache pour voir la page qui a générée l'erreur 404. Peux être que ca indiquera une erreur dans la transformation de l'url.

Mammouth du PHP | 725 Messages

02 janv. 2014, 14:02

voici le log:
[Thu Jan 02 11:59:22 2014] [error] [client 127.0.0.1] File does not exist: /home/rimie/www/Cars.html, referer: http://localhost/index.php?rub=Cars
par contre, quand je mets cet url: http://localhost/index.php?rub=Cars, ca marche tres bien, il affiche la page demandee

Eléphant du PHP | 52 Messages

02 janv. 2014, 17:42

Avec un leading slash peut-être ?

Code : Tout sélectionner

RewriteRule ^/(\w+)\.html$ index.php?rub=$1 [L]
Image Zend Certified Engineer

Mammouth du PHP | 725 Messages

03 janv. 2014, 04:22

meme avec /, ca marche pas

Mammouth du PHP | 725 Messages

03 janv. 2014, 05:12

le fichier de configuration du site /etc/apache2/sites-available avait AllowOverride None, je l'ai mis en All
<Directory /home/rimie/NetBeansProjects/*/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
merci a vous

Eléphant du PHP | 52 Messages

03 janv. 2014, 11:43

Dans les options il te manque le FileInfo.
Options Indexes FollowSymLinks MultiViews FileInfo
Image Zend Certified Engineer

Mammouth du PHP | 725 Messages

04 janv. 2014, 04:00

Dans les options il te manque le FileInfo.
Options Indexes FollowSymLinks MultiViews FileInfo
merci ikkiphenix, ca sert a quoi exactement?

Eléphant du PHP | 52 Messages

04 janv. 2014, 10:33

Ca active un groupe de directives dont celles liées au mod_rewrite. Mettre AllowOverride à All t'autorise à surcharger avec tes propres directives dans un .htaccess par exemple, mais faut-il encore que tu le déclares explicitement. Ou sinon on le déclare comme ici, en amont dans les Options.
Image Zend Certified Engineer

Mammouth du PHP | 725 Messages

10 janv. 2014, 23:46

desolee, j'ai pas compris, est ce que t as un exemple?