Problème de réecriture d' url

Bonjour,
Je développe actuellement un site internet sous Prestashop, il fonctionne convenablement, mis à par la réecriture des url. J’ ai cherché pendant deux semaines du coté de Prestashop, sans rien trouver, et finalement je pense que cela vient de mon serveur apache qui tourne en local sur ma Debian Wheezy. En effet, je viens de transférer mon site sur mon mutualisé, et là cela fonctionne sans problème. Pourtant l’ option semble activée sous apache. Je le retrouve ici :/usr/lib/apache2/modules/

Sur mon site, quand je clique sur un article, je me retrouve avec ce message :

Le numéro 28 est l’id de la catégorie. Il ne devrait pas apparaitre ici.
Si je vais sur la fiche produit, l’ url réecrite donne :

Je ne vois pas ce que fais “lang” ici.

Il y a donc un mix entre les catégories, les produits,et c’ est normal que j’ ai une erreur. Plus ce “lang” sorti de je ne sais ou.

J’ ai regénéré le fichier .htaccess, vidé les caches…

Merci d’ avance pour votre aide.

C’est dans /etc/apache2/mods-enabled qu’il faut regarder. Cf isalo.org/wiki.debian-fr/Apache#Modules

Vérifie aussi dans la configuration de ton vhost que le .htaccess est bien pris en compte (AllowOverride All).

Bonsoir je te remercie de ta réponse. Je n’ ai pas tout saisi le tuto.
Effectivement je n’ ai pas le module dans /etc/apache2/mods-enabled

Je lis le tuto :

Les modules sont installés dans /etc/apache2/mods-available. Pour chaque module, vous trouverez un fichier .load qui contient la directive pour charger le module, et un fichier .conf qui contient sa configuration (que vous pouvez adapter à vos besoins).

Je ne trouve qu’ un fichier .load pour le module rewrite.

Il faut par la suite que je tape :

Et :

C’ est bien ça ?

Oui c’est bien ça et ne pas oublier de redémarrer le serveur apache2.

Bonsoir et merci de ta réponse.
En fait cela ne fonctionne toujours pas, j’ ai toujours ce problème de réecriture. Voici ce que j’ ai tapé :

a2enmod rewrite Enabling module rewrite. To activate the new configuration, you need to run: service apache2 restart root@debian7:/home/casper# service apache2 restart [....] Restarting web server: apache2apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName . ok

Bonne soirée.

Quelles sont les règles? Donne le fichier de configuration du site.

Bonsoir et désolé de ne pas avoir pu répondre plus tôt.
Quels sont les regles et le fichier de configuration dont tu fais référence ?

Bonne soirée.

Ton site a des règles de réécriture d’URL qui sont en général dans le fichier le définissante (sous /etc/apache2/sites-availables/ en général)

Bonjour merci pour ta réponse.
Dans le répertoire dont tu fais référence, j’ ai deux dossiers : default et default-ssl
avec à l’ intérieur :

[code]cat default
<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
	Options FollowSymLinks
	AllowOverride None
</Directory>
<Directory /var/www/>
	Options Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order allow,deny
	allow from all
</Directory>

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
casper@debian7:/etc/apache2/sites-available$ ls default default-ssl casper@debian7:/etc/apache2/sites-available$ cat default ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
	Options FollowSymLinks
	AllowOverride None
</Directory>
<Directory /var/www/>
	Options Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order allow,deny
	allow from all
</Directory>

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
[/code]

Et :

[code]cat default-ssl


ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
	Options FollowSymLinks
	AllowOverride None
</Directory>
<Directory /var/www/>
	Options Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order allow,deny
	allow from all
</Directory>

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}/ssl_access.log combined

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

#   A self-signed (snakeoil) certificate can be created by installing
#   the ssl-cert package. See
#   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
#   If both key and certificate are stored in the same file, only the
#   SSLCertificateFile directive is needed.
SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

#   Server Certificate Chain:
#   Point SSLCertificateChainFile at a file containing the
#   concatenation of PEM encoded CA certificates which form the
#   certificate chain for the server certificate. Alternatively
#   the referenced file can be the same as SSLCertificateFile
#   when the CA certificates are directly appended to the server
#   certificate for convinience.
#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt

#   Certificate Authority (CA):
#   Set the CA certificate verification path where to find CA
#   certificates for client authentication or alternatively one
#   huge file containing all of them (file must be PEM encoded)
#   Note: Inside SSLCACertificatePath you need hash symlinks
#         to point to the certificate files. Use the provided
#         Makefile to update the hash symlinks after changes.
#SSLCACertificatePath /etc/ssl/certs/
#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt

#   Certificate Revocation Lists (CRL):
#   Set the CA revocation path where to find CA CRLs for client
#   authentication or alternatively one huge file containing all
#   of them (file must be PEM encoded)
#   Note: Inside SSLCARevocationPath you need hash symlinks
#         to point to the certificate files. Use the provided
#         Makefile to update the hash symlinks after changes.
#SSLCARevocationPath /etc/apache2/ssl.crl/
#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl

#   Client Authentication (Type):
#   Client certificate verification type and depth.  Types are
#   none, optional, require and optional_no_ca.  Depth is a
#   number which specifies how deeply to verify the certificate
#   issuer chain before deciding the certificate is not valid.
#SSLVerifyClient require
#SSLVerifyDepth  10

#   Access Control:
#   With SSLRequire you can do per-directory access control based
#   on arbitrary complex boolean expressions containing server
#   variable checks and other lookup directives.  The syntax is a
#   mixture between C and Perl.  See the mod_ssl documentation
#   for more details.
#<Location />
#SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
#            and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
#            and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
#            and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
#            and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20       ) \
#           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
#</Location>

#   SSL Engine Options:
#   Set various options for the SSL engine.
#   o FakeBasicAuth:
#     Translate the client X.509 into a Basic Authorisation.  This means that
#     the standard Auth/DBMAuth methods can be used for access control.  The
#     user name is the `one line' version of the client's X.509 certificate.
#     Note that no password is obtained from the user. Every entry in the user
#     file needs this password: `xxj31ZMTZzkVA'.
#   o ExportCertData:
#     This exports two additional environment variables: SSL_CLIENT_CERT and
#     SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
#     server (always existing) and the client (only existing when client
#     authentication is used). This can be used to import the certificates
#     into CGI scripts.
#   o StdEnvVars:
#     This exports the standard SSL/TLS related `SSL_*' environment variables.
#     Per default this exportation is switched off for performance reasons,
#     because the extraction step is an expensive operation and is usually
#     useless for serving static content. So one usually enables the
#     exportation for CGI and SSI requests only.
#   o StrictRequire:
#     This denies access when "SSLRequireSSL" or "SSLRequire" applied even
#     under a "Satisfy any" situation, i.e. when it applies access is denied
#     and no other module can change it.
#   o OptRenegotiate:
#     This enables optimized SSL connection renegotiation handling when SSL
#     directives are used in per-directory context.
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
	SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
	SSLOptions +StdEnvVars
</Directory>

#   SSL Protocol Adjustments:
#   The safe and default but still SSL/TLS standard compliant shutdown
#   approach is that mod_ssl sends the close notify alert but doesn't wait for
#   the close notify alert from client. When you need a different shutdown
#   approach you can use one of the following variables:
#   o ssl-unclean-shutdown:
#     This forces an unclean shutdown when the connection is closed, i.e. no
#     SSL close notify alert is send or allowed to received.  This violates
#     the SSL/TLS standard but is needed for some brain-dead browsers. Use
#     this when you receive I/O errors because of the standard approach where
#     mod_ssl sends the close notify alert.
#   o ssl-accurate-shutdown:
#     This forces an accurate shutdown when the connection is closed, i.e. a
#     SSL close notify alert is send and mod_ssl waits for the close notify
#     alert of the client. This is 100% SSL/TLS standard compliant, but in
#     practice often causes hanging connections with brain-dead browsers. Use
#     this only for browsers where you know that their SSL implementation
#     works correctly.
#   Notice: Most problems of broken clients are also related to the HTTP
#   keep-alive facility, so you usually additionally want to disable
#   keep-alive for those clients, too. Use variable "nokeepalive" for this.
#   Similarly, one has to force some clients to use HTTP/1.0 to workaround
#   their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
#   "force-response-1.0" for this.
BrowserMatch "MSIE [2-6]" \
	nokeepalive ssl-unclean-shutdown \
	downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
[/code]

Bon après midi.

Bon, donc les règles de réeciture sont dans les .htaccess. Essaye de regarder dedans,

Bonsoir,
Voici le fichier .htaccess :

[code] # start Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again

.htaccess automaticaly generated by PrestaShop e-commerce open-source solution

http://www.prestashop.com - http://www.prestashop.com/forums

SetEnv HTTP_MOD_REWRITE On

RewriteEngine on
RewriteRule . - [E=REWRITEBASE:/nomdemabase/]
RewriteRule ^api/?(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]

Images

RewriteRule ^([0-9])(-[_a-zA-Z0-9-])?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(-[_a-zA-Z0-9-]
)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-])?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]
)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-])?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]
)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[a-zA-Z0-9-])?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]
)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteRule ^c/([0-9]+)(-[._a-zA-Z0-9-])(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z
-]+)(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]

AlphaImageLoader for IE and fancybox

RewriteRule ^images_ie/?([^/]+).(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

Dispatcher

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.$ - [NC,L]
RewriteRule ^.
$ %{ENV:REWRITEBASE}index.php [NC,L]

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-font-woff .woff

#If rewrite mod isn’t enabled
ErrorDocument 404 /xxxxxx/index.php?controller=404

end Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again [/code]

C’ est cette rubrique : SetEnv HTTP_MOD_REWRITE On qui s’ occupe de la réécriture c’ est bien ça ?

J’ ai tenté de supprimé ce fichier, il se régénère, mais sans plus de succès.

Merci, bonne soirée.

Ne le supprime pas sans raison, ici visiblement c’est le .htaccess du répertoire des images. Visiblement tu utilises un système d’édition de site. Quel est le .htaccess dans le répertoire prestashop/ de ton site? C’est celui là qui doit faire la réécriture

Je l’ avais supprimé car j’ avais lu que cela pouvait résoudre certains problèmes, en se régénérant, mais pas ici apparament.

C ’ est bien le .htaccess qui est à la racine de mon site.

Bonne soirée.

Ben oui, c’est ce que j’ai dit, il faudrait celui qui est dans /prestashop, ici il ne réecrit que les URL d’images

Bonsoir,
Je ne te suis pas désolé.
Le .htaccess que j’ ai cité est celui qui est à la racine du site. Voici le contenu de /prestashop

ls -a . controllers footer.php localization sitemap.xml .. css header.php log themes admin1421 docs .htaccess mails tools cache download images.inc.php modules translations classes dump img modules.txt upload config error500.html index.php override webservice CONTRIBUTING.md favicon.2.ico.gif init.php pdf CONTRIBUTORS.md favicon.ico.gif js README.md

Merci beaucoup, bonne soirée.

Alors je n’ai pas d’idées.

Oui c’ est bien mystérieux tout ça… J’ ai posté sur les forums Prestashop, Francophone et Anglophone, personne n’ a d’ idée.

Merci en tout cas du temps que tu m’ as consacré.

Bonne soirée.

As tu fais une recherche de /lang dans le site?

grep -r “/lang” *

pour voir d’où vient le prefixe?

Bonjour,
Je te remercie de ta réponse.
Je viens de lancer ta commande, que dois je vérifier dedans ?
Bonne journée.

Tu devrais voir d’où ce «/lang» sort…