Module rewrite sans effet - administrateur système débutant

Bonjour,

Après une semaine de recherche infructueuses, je sollicite votre aide.
Je travail sur un site internet qui est hébergé sur un serveur dédié chez OVH, plus précisément SoYouStart.
Debian 7.5 stable (Wheezy) (64bits)
Je souhaite activer la réécriture d’url. J’ai suivi les instructions que j’ai trouvées dans divers tutoriaux et le module est bien présent dans phpinfo() et “a2enmod rewrite” me dit que c’est déjà actif.
Je pensais donc que le problème était lié à mon hébergeur mais quand je tente la même opération sur mon pc de dev (lubuntu 14.04), j’ai le même résultat.

Voici les informations sur ma config
.htaccess:
RewriteEngine On
RewriteRule ^foo.html$ test.html [L]

dans le répertoire
root@smtp:/var/www# ls -alt
total 36
drwxr-xr-x 5 root root 4096 Sep 3 11:26 .
-rwxrwxrwx 1 root root 364 Sep 3 11:26 test.html
-rw-r–r-- 1 root root 55 Sep 2 23:07 .htaccess
-rw-r–r-- 1 root root 514 Sep 1 15:39 index.php
-rwxrwxrwx 1 root root 364 Aug 31 17:27 index.html

J’ai un virtual host configuré comme suit:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName nsXXXXXX.ip-XXX-XXX-XXX.eu
ServerAlias [MonServeurAlias]
DocumentRoot /var/www
<Directory /var/www/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

Je vous remercie par avance pour votre aide et aussi, je remercie toute la communauté pour tous les posts, tutoriaux, discussion qui m’ont permis d’en apprendre beaucoup.

Arnaud.

Salut,

as tu redémarré apache après tes modifications ?

# /etc/init.d/apache2 restart

Lorsque tu accède au site, peux tu nous dire si une page d’erreur s’affiche et poster les logs de /var/log/apache2/error.log et de /var/log/apache2/access.log ici.

Bonjour et merci pour ta réponse.
Oui j’ai bien redémarré les services tantôt par init.d, tantôt par service apache2 reload.
La page qui s’affiche est une erreur 404
Not Found
The requested URL /foo.html was not found on this server.

Dans error.log :
[Wed Sep 03 16:52:35 2014] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/foo.html
[Wed Sep 03 16:52:36 2014] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/foo.html

et dans access.log :
xxx.xxx.xxx.xxx - - [03/Sep/2014:16:52:35 +0200] “GET /foo.html HTTP/1.1” 404 502 “-” "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"
xxx.xxx.xxx.xxx - - [03/Sep/2014:16:52:36 +0200] “GET /foo.html HTTP/1.1” 404 501 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36”

Salut,

Erreur HTTP 404 Url, non trouvé.

Les messages d’erreurs sont pourtant clairs.

[quote=“Arnonyme”]Dans error.log :

[mono][Wed Sep 03 16:52:35 2014] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/foo.html
[Wed Sep 03 16:52:36 2014] [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/foo.html[/mono]
[/quote]

[quote=“Arnonyme”]Voici les informations sur ma config
.htaccess:

[mono]RewriteEngine On
RewriteRule ^foo.html$ test.html [L][/mono]

dans le répertoire

[mono]root@smtp:/var/www# ls -alt
total 36
drwxr-xr-x 5 root root 4096 Sep 3 11:26 .
-rwxrwxrwx 1 root root 364 Sep 3 11:26 test.html
-rw-r–r-- 1 root root 55 Sep 2 23:07 .htaccess
-rw-r–r-- 1 root root 514 Sep 1 15:39 index.php
-rwxrwxrwx 1 root root 364 Aug 31 17:27 index.html[/mono][/quote]

Bonjour BelZéButh

Je n’ai pas compris ta réponse.

Oui le message est claire, et on pourrait dire normal puisque le fichier n’existe réellement pas, mais avec le module rewrite activé et la ligne

dans le .htaccess, le serveur devrait afficher test.html.

Mon problème est que ça ne fonctionne pas et que l’url que le serveur tente de servir est /foo.html au lieu de /test.html

Je crois qu’il te montre comment modifier ta rewriterule …
ça fait longtemps que j’essaie de comprendre à bien faire fonctionner les rewriterules, sans vraiment y arriver …

[quote=“Arnonyme”][…]

on pourrait dire normal puisque le fichier n’existe réellement pas, mais avec le module rewrite activé et la ligne

[…]

Module Apache mod_rewrite

@Belzebuth
Je suis vraiment désolé mais je ne comprends pas tes réponses. Je connais les expressions régulières, j’ai suivi les étapes d’un tutoriel, j’ai lu les docs d’apache…
Si ça ne fonctionne pas, c’est probablement que j’ai mal fait quelque chose, mais je ne suis pas venu posé une question dès ma première tentative, cela fait 5 jours que je me prends la tête sur le sujet.

Pourrais-tu être plus verbeux s’il te plait ? Ce qui est évident pour toi ne l’est pas forcément pour tous.

Merci d’avance.

[quote=“Arnonyme”]
J’ai un virtual host configuré comme suit:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName nsXXXXXX.ip-XXX-XXX-XXX.eu
ServerAlias [MonServeurAlias]
DocumentRoot /var/www
<Directory /var/www/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

Arnaud.[/quote]
=> quel est le chemin de ce fichier ?

Bonjour,

Mon virualhost est situé dans /etc/apache2/sites-available
et actif dans /etc/apache2/sites-enabled.
Ce virtual host est pris en compte car sinon, les domaines ne pointes pas sur le répertoire /var/www

Mon problème est résolu.
J’ai découvert que le fichier httpd.conf était moins prioritaire que le apache2.conf et que mes configurations étaient par conséquent inutiles.
J’ai également supprimé la routine ifModule que j’avais trouvée dans un tutoriel à la fin du apache2.conf.

Je ne sais pas exactement pourquoi ça marche, mais ça marche. Je suis enfin repassé à la pratique !

Merci néanmoins pour votre aide.

“La théorie, c’est quand on sait tout et que rien ne fonctionne.
La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique: Rien ne fonctionne… et personne ne sait pourquoi !” A. Einstein