Débutante en Url rewriting : règle non prise en compte

  • Auteur de la discussion Auteur de la discussion K-ro
  • Date de début Date de début
Nouveau WRInaute
Bonjour!

Je cherche à réécrire une URL de la manière suivante :

Par exemple :
http://www.monsite/index.html deviendrait

/servlets/Generique.do?URL=http://www.monsite/index.html

La partie suivante est fixe : "/servlets/Generique.do?URL="
La partie qui suit dépend de l'URL demandée.

La règle que j'ai écrite dans le fichier .htaccess est la suivante :
# fichier .htaccess
Options FollowSymLinks
RewriteEngine on
RewriteRule (.*)html /servlets/Generique.do?URL=$1

Dans le fichier httpd.conf
J'ai décommenté le LoadModule et pour voir les logs j'ai ajouté

<IfModule mod_rewrite.c> RewriteLog "D:/prog/apachegroup/Apache2/logs/apache.log"</IfModule>


Au final, la réécriture d'URL ne se fait. Et je n'ai aucune trace dans les logs.

Je ne sais plus quoi faire... Est ce que ma règle est correcte? Est ce que l'URlRewriting me permettrait de faire ça?

Merci d'avance!!!
 
Nouveau WRInaute
Alors je ne sais pas si c ça que tu veux dire, mais bon :
J'ai mis mon .htaccess dans Apache dans le répertoire contenant tous mes fichiers statiques... et ça ne marche pas.

Est ce que ma règle est correcte?
 
WRInaute passionné
cette page : -http://www.monsite/index.html, c'est une page de ton site, ou c'est une adresse distante ??
Car si c'est le cas, c'est pas ton serveur qui va la mouliner, mais le serveur distant....
 
Nouveau WRInaute
Effectivement j'ai fait une erreur dans l'URL de la page, car c'est une application Web que je suis en train de faire et par conséquent l'adresse serait plutot :
http://nom_du_serveur:num_port/repertoi ... index.html.

En fait mes fichiers statiques sont sur Apache et mon serveur d'application est Weblogic. Et j'essaie donc de faire de la réécriture d'URL via Apache.

Est ce que cela te semble possible?
 
WRInaute occasionnel
A priori, il faut passer par une requête proxy, quelque chose comme
Code:
RewriteRule (.*)html http://weblogic/servlets/Generique.do?URL=$1 [P,L]

Ca suppose que mod_proxy soit activé sur le serveur.
 
Nouveau WRInaute
J'ai activé le mod_proxy.
J'ai modifié le RewriteRule du .htaccess comme tu me l'as conseillé. Mais je pense que la règle de réécriture (bien qu'elle ait l'air plus correcte :D )
n'est toujours pas prise en compte.

Y a t'il quelque chose à spécifier dans le httpd.conf pour que le .htaccess soit pris en compte?

Pour info : j'ai placé le .htaccess à la racine de mon repertoire contenant tous mes répertoires de fichiers statiques.
J'ai fait le load du mod_rewrite, et je n'ai aucun log dans le fichier de log qui a quand même été crée grâce à l'instruction
Code:
RewriteLog "D:/prog/apachegroup/Apache2/logs/apache.log"
que j'ai placé dans le httpd.conf
 
WRInaute occasionnel
Il faut que le répertoire contenant le .htaccess ait le droit de modifier les directives. Ca se fait avec AllowOverride dans le httpd.conf, par exemple :
Code:
<Directory la_racine_www>
    AllowOverride All
</Directory>

Pour info, les performances sont nettement meilleures quand les règles de réécriture sont dans la conf Apache.
 
Nouveau WRInaute
La règle n'est toujours pas prise en compte!!!!!!!!!!! :cry:

Il n'y a rien d'autre à préciser?
 
WRInaute impliqué
J'comprends pas la logique : si tu appelles un lien extérieur je ne vois pas comment la réécriture pourra être faite : elle concerne les pages sur le serveur du .htaccess ... ou alors j'ai loupé quelque chose ?
 
WRInaute occasionnel
Reprenons :
1/ Apache fonctionne? Un appel à -http://apache/test.jpg renvoie bien une image et écrit dans le fichier de log? Avec un fichier test.jpg à la racine du site, bien entendu.

2/ L'UR fonctionne? En mettant dans le httpd.conf
Code:
RewriteEngine On
RewriteRule ^/test2.jpg$ /test.jpg [L]
et en appelant -http://apache/test2.jpg, tu devrais obtenir test.jpg

3/ Le .htaccess est-il pris en compte? Mets n'importe quoi dedans qui ne soit pas une commande Apache et tu devrais obtenir une erreur 500

On va commencer avec ca. Ne pas oublier de redémarrer Apache après chaque modification dans le httpd.conf, au cas où...
 
Nouveau WRInaute
En fait :
- Apache fonctionne puisque j'arrive à faire afficher une image.
- l'UR ne fonctionne pas.
-le .htaccess ne fonctionne pas.

Je ne vois vraiment pas d'ou ça peut venir... Ci joint je met le httpd.conf, si quelqu'un peut y jeter un coup d'oeil voir ce qui ne va pas...car j'ai une poutre dans l'oeil je crois...

Merci Beaucoup d'avance!!!

Code:
ServerRoot "D:/prog/apachegroup/Apache2"

PidFile logs/httpd.pid

Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15

<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild  0
</IfModule>

Listen 8000
Listen 8001
Listen 8090

LoadModule access_module modules/mod_access.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_module modules/mod_auth.so
#LoadModule auth_anon_module modules/mod_auth_anon.so
#LoadModule auth_dbm_module modules/mod_auth_dbm.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule cgi_module modules/mod_cgi.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule headers_module modules/mod_headers.so
LoadModule imap_module modules/mod_imap.so
LoadModule include_module modules/mod_include.so
#LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule status_module modules/mod_status.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule ssl_module modules/mod_ssl.so


UseCanonicalName Off

DocumentRoot "D:/prog/apachegroup/Apache2/htdocs"

<Directory />
    #Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "D:/prog/apachegroup/Apache2/htdocs">

    Options Indexes FollowSymLinks

    AllowOverride None

    Order allow,deny
    Allow from all

</Directory>

UserDir "My Documents/My Website"

DirectoryIndex index.html index.html.var

AccessFileName .htaccess

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

TypesConfig conf/mime.types

DefaultType text/plain

<IfModule mod_mime_magic.c>
    MIMEMagicFile conf/magic
</IfModule>

HostnameLookups Off

ErrorLog logs/error.log

LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

CustomLog logs/access.log common

ServerTokens Full

ServerSignature On

Alias /icons/ "D:/prog/apachegroup/Apache2/icons/"

<Directory "D:/prog/apachegroup/Apache2/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

AliasMatch ^/manual(?:/(?:de|en|fr|ja|ko|ru))?(/.*)?$ "D:/prog/apachegroup/Apache2/manual$1"

<Directory "D:/prog/apachegroup/Apache2/manual">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all

    <Files *.html>
        SetHandler type-map
    </Files>

    SetEnvIf Request_URI ^/manual/de/ prefer-language=de
    SetEnvIf Request_URI ^/manual/en/ prefer-language=en
    SetEnvIf Request_URI ^/manual/fr/ prefer-language=fr
    SetEnvIf Request_URI ^/manual/ja/ prefer-language=ja
    SetEnvIf Request_URI ^/manual/ko/ prefer-language=ko
    SetEnvIf Request_URI ^/manual/ru/ prefer-language=ru
    RedirectMatch 301 ^/manual(?:/(de|en|fr|ja|ko|ru)){2,}(/.*)?$ /manual/$1$2
</Directory>

ScriptAlias /cgi-bin/ "D:/prog/apachegroup/Apache2/cgi-bin/"

<Directory "D:/prog/apachegroup/Apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

IndexOptions FancyIndexing VersionSort

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

DefaultIcon /icons/unknown.gif

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw

LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW

ForceLanguagePriority Prefer Fallback

AddDefaultCharset ISO-8859-1

AddCharset ISO-8859-1  .iso8859-1 .latin1
AddCharset ISO-8859-2  .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3  .iso8859-3 .latin3
AddCharset ISO-8859-4  .iso8859-4 .latin4
AddCharset ISO-8859-5  .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6  .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7  .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8  .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9  .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5        .Big5       .big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251   .win-1251
AddCharset CP866       .cp866
AddCharset KOI8-r      .koi8-r .koi8-ru
AddCharset KOI8-ru     .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8       .utf8

AddCharset GB2312      .gb2312 .gb 
AddCharset utf-7       .utf7
AddCharset utf-8       .utf8
AddCharset big5        .big5 .b5
AddCharset EUC-TW      .euc-tw
AddCharset EUC-JP      .euc-jp
AddCharset EUC-KR      .euc-kr
AddCharset shift_jis   .sjis

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

AddHandler type-map var

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully

<IfModule mod_ssl.c>
    Include conf/ssl.conf
</IfModule>


#######################################
####  Chargement Module WebLogic   ####
#######################################


LoadModule weblogic_module modules/mod_wl_20.so



##****************************##
## Création des virtual hosts ##
##****************************##

NameVirtualHost xxx.xxx.xxx.xxx:8001
NameVirtualHost yyy.yyy.yyy.yyy:8090

#########
##HOTE1##     !!!! AVEC DNS !!!!
#########
<VirtualHost xxx.xxx.xxx.xxx:8001>

    DocumentRoot ./htdocs
    ServerName xxx.xxx.xxx.xxx:8001


	<Directory "D:/prog/apachegroup/Apache2/htdocs/nomApplication1/*/">
		AllowOverride All
	</Directory>


	## Configuration Module WebLogic ##
	##-------------------------------##

	<IfModule mod_weblogic.c>
		MatchExpression *.jsp WebLogicHost=aaa.aaa.aaa.aaa|WebLogicPort=7101
		MatchExpression *.do  WebLogicHost=aaa.aaa.aaa.aaa|WebLogicPort=7101
		MatchExpression *j_security_check* WebLogicHost=aaa.aaa.aaa.aaa|WebLogicPort=7101
		MatchExpression *nomApplication1/ WebLogicHost=aaa.aaa.aaa.aaa|WebLogicPort=7101
	</IfModule>
	
	<IfModule mod_rewrite.c>
		Options FollowSymLinks
		RewriteEngine on
		RewriteRule (.*)html http://weblogic/servlets/Generique.do?URL=$1 [P,L] 
		RewriteLog "D:/prog/apachegroup/Apache2/logs/apache.log"
	</IfModule>
		
</VirtualHost>



#########
##HOTE1##     !!!! AVEC DNS !!!!
#########
<VirtualHost yyy.yyy.yyy.yyy:8090>

    DocumentRoot ./htdocs
    ServerName yyy.yyy.yyy.yyy:8090


	##On interdit l'acces aux données statiques##

	<Directory "D:/prog/apachegroup/Apache2/htdocs/nomApplication2/*/">
		AllowOverride All
	        Order Allow,Deny
                Allow from all
		Options -Indexes
	</Directory>


	## Configuration Module WebLogic ##
	##-------------------------------##


	<IfModule mod_weblogic.c>
		MatchExpression *.jsp WebLogicHost=bbb.bbb.bbb.bbb|WebLogicPort=7001
		MatchExpression *.do  WebLogicHost=bbb.bbb.bbb.bbb|WebLogicPort=7001
		MatchExpression *j_security_check* WebLogicHost=bbb.bbb.bbb.bbb|WebLogicPort=7001
		MatchExpression *nomApplication2/ WebLogicHost=bbb.bbb.bbb.bbb|WebLogicPort=7001
	</IfModule>
</VirtualHost>
 
WRInaute occasionnel
Essaie ca pour ton premier VirtualHost
Code:
<VirtualHost xxx.xxx.xxx.xxx:8001>
	ServerName xxx.xxx.xxx.xxx:8001
	DocumentRoot "D:/prog/apachegroup/Apache2/htdocs/nomApplication1"

	<Directory "D:/prog/apachegroup/Apache2/htdocs/nomApplication1">
		AllowOverride All
	</Directory>

	RewriteEngine on
	RewriteRule (.*)html http://weblogic/servlets/Generique.do?URL=$1 [P,L]

	ErrorLog "D:/prog/apachegroup/Apache2/logs/error_8001.log"
	RewriteLog "D:/prog/apachegroup/Apache2/logs/rewrite_8001.log"
	RewriteLogLevel 9
</VirtualHost>

Ca ne résoudra pas forcément le problème, mais au moins tu devrais avoir deux fichiers de log supplémentaires au redémarrage d'Apache qui permettront de voir ce qui se passe.
 
Nouveau WRInaute
Le contenu de mon fichier de log error_8001.log est :

Code:
Apache.exe: Could not determine the server's fully qualified domain name, using xxx.xxx.xxx.xxx for ServerName
Apache.exe: Could not determine the server's fully qualified domain name, using xxx.xxx.xxx.xxx for ServerName
[Thu Mar 10 20:00:15 2005] [error] [client xxx.xxx.xxx.xxx ] File does not exist: D:/prog/apachegroup/Apache2/htdocs/portailDS200/img/test2.gif
[Thu Mar 10 20:00:20 2005] [error] [client xxx.xxx.xxx.xxx ] File does not exist: D:/prog/apachegroup/Apache2/htdocs/portailDS200/img/test2.gif
Apache.exe: Could not determine the server's fully qualified domain name, using xxx.xxx.xxx.xxx for ServerName
[Thu Mar 10 20:06:55 2005] [error] [client xxx.xxx.xxx.xxx ] File does not exist:

Par contre le fichier rewrite_8001.log n'a pas été créé.

..???

C'est que le rewriting n'est pas pris en compte? Est il compatible avec l'utilisation de weblogic?
 
WRInaute occasionnel
Etrange. Si l'URL rewriting n'était pas activé, le redémarrage d'Apache devrait échouer pour cause de règles inconnues. Essaie de repartir avec un fichier de conf d'origine, en activant mod_rewrite et en lui fournissant un VirtualHost de test minimal, par exemple
Code:
<VirtualHost xxx.xxx.xxx.xxx:8001>
   ServerName xxx.xxx.xxx.xxx:8001
   DocumentRoot "D:/prog/apachegroup/Apache2/htdocs/portailDS200"
   ErrorLog "D:/prog/apachegroup/Apache2/logs/error_8001.log"

   RewriteEngine on
   RewriteLog "D:/prog/apachegroup/Apache2/logs/rewrite_8001.log"
   RewriteLogLevel 9

   RewriteRule ^/img/test2.gif$ /test.gif [L]
</VirtualHost>

Avec un peu de chance...
 
Discussions similaires
Haut