Rewrite ou redirect (un tout petit peu hs)

Hi

J'ai un petit probleme avec les URL directs des documents du genre:
http://www.monsite/IMG/pdf/document.pdf

J'aimerai bien que ces adresses soient redirigees vers des adresses du genre:
http://www.monsite/spip.php?page=voir_doc&doc=IMG/pdf/document.pdf

dans un fichier .htaccess. Mais comme je suis un peu nul dans les rewrite ou redirect, auriez-vous une idee comment ecrire ceci.

Merci d'avance

George

george@middleeastwatch.net a écrit :

Hi
J'ai un petit probleme avec les URL directs des documents du genre:
http://www.monsite/IMG/pdf/document.pdf
J'aimerai bien que ces adresses soient redirigees vers des adresses du genre:
http://www.monsite/spip.php?page=voir_doc&doc=IMG/pdf/document.pdf
dans un fichier .htaccess. Mais comme je suis un peu nul dans les rewrite ou redirect, auriez-vous une idee comment ecrire ceci.
Merci d'avance
George

Salut,

je propose :
RewriteRule ^(IMG)/([-a-z])/[-a-zA-Z0-9.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3
Mais attention, cela le fera pour tous les documents qui sont dans un sous-répertoire de IMG, donc pour les images aussi.
Si c'est uniquement pour les pdf, plutôt ça :
RewriteRule ^(IMG)/(pdf)/[-a-zA-Z0-9.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3
Et tu peux rajouter des types de documents en les mettant ainsi :
RewriteRule ^(IMG)/(pdf|ppt|flv)/[-a-zA-Z0-9.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3

Voir la doc d'Apache :
http://httpd.apache.org/docs/trunk/fr/rewrite/rewrite_intro.html

Sylvain

Sylvain a écrit :

george@middleeastwatch.net a écrit :

Hi
J'ai un petit probleme avec les URL directs des documents du genre:
http://www.monsite/IMG/pdf/document.pdf
J'aimerai bien que ces adresses soient redirigees vers des adresses du genre:
http://www.monsite/spip.php?page=voir_doc&doc=IMG/pdf/document.pdf
dans un fichier .htaccess. Mais comme je suis un peu nul dans les rewrite ou redirect, auriez-vous une idee comment ecrire ceci.
Merci d'avance
George

J'ai oublié une parenthèse !
Le bon code est le suivant :
RewriteRule ^(IMG)/([-a-z])/([-a-zA-Z0-9.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3
Mais attention, cela le fera pour tous les documents qui sont dans un sous-répertoire de IMG, donc pour les images aussi.
Si c'est uniquement pour les pdf, plutôt ça :
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3
Et tu peux rajouter des types de documents en les mettant ainsi :
RewriteRule ^(IMG)/(pdf|ppt|flv)/([-a-zA-Z0-9.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3

Voir la doc d'Apache :
http://httpd.apache.org/docs/trunk/fr/rewrite/rewrite_intro.html

Sylvain

Quoting Sylvain <servicesnet@sylvain-mary.net>:

Sylvain a écrit :
J'ai oublié une parenthèse !
Le bon code est le suivant :
RewriteRule ^(IMG)/([-a-z])/([-a-zA-Z0-9.]+)$
spip.php?page=voir_doc&doc=$1/$2/$3
Mais attention, cela le fera pour tous les documents qui sont dans un sous-répertoire de IMG, donc pour les images aussi.
Si c'est uniquement pour les pdf, plutôt ça :
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3
Et tu peux rajouter des types de documents en les mettant ainsi :
RewriteRule ^(IMG)/(pdf|ppt|flv)/([-a-zA-Z0-9.]+)$
spip.php?page=voir_doc&doc=$1/$2/$3

Voir la doc d'Apache :
http://httpd.apache.org/docs/trunk/fr/rewrite/rewrite_intro.html

Sylvain

Merci pour la reponse, mais dommage ca ne marche pas. En fait ca n'a absolument aucun effet meme pas la generation d'une erreur, ca affiche toujours le document pdf. C'est normal?

George

george@middleeastwatch.net a écrit :

Quoting Sylvain <servicesnet@sylvain-mary.net>:

Sylvain a écrit :
J'ai oublié une parenthèse !
Le bon code est le suivant :
RewriteRule ^(IMG)/([-a-z])/([-a-zA-Z0-9.]+)$
spip.php?page=voir_doc&doc=$1/$2/$3
Mais attention, cela le fera pour tous les documents qui sont dans un sous-répertoire de IMG, donc pour les images aussi.
Si c'est uniquement pour les pdf, plutôt ça :
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3
Et tu peux rajouter des types de documents en les mettant ainsi :
RewriteRule ^(IMG)/(pdf|ppt|flv)/([-a-zA-Z0-9.]+)$
spip.php?page=voir_doc&doc=$1/$2/$3

Voir la doc d'Apache :
http://httpd.apache.org/docs/trunk/fr/rewrite/rewrite_intro.html

Sylvain

Merci pour la reponse, mais dommage ca ne marche pas. En fait ca n'a absolument aucun effet meme pas la generation d'une erreur, ca affiche toujours le document pdf. C'est normal?

George

Quelle ligne as-tu mis dans le.htaccess et à quel endroit ?
Car si elle est après la ligne "RewriteRule ^[^\.]+(\.html)?$ spip.php [QSA,E=url_propre:$0,L]", c'est normal que ça ne marche pas car le L dans les indique que c'est la dernière règle à prendre en compte.
Et il faut peut-être ajouter un flag last [L] à la fin de la ligne, séparé par un espace.
Je la mettrais dans les réglages personnalisés, ce qui donne :
################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3 [L]

Si ça ne fonctionne pas, il faut essayer "d'antislasher" le point :
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9\.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3 [L]

Sylvain

Quoting Sylvain <servicesnet@sylvain-mary.net>:

george@middleeastwatch.net a écrit :

Quelle ligne as-tu mis dans le.htaccess et à quel endroit ?
Car si elle est après la ligne "RewriteRule ^[^\.]+(\.html)?$ spip.php [QSA,E=url_propre:$0,L]", c'est normal que ça ne marche pas car le L dans les indique que c'est la dernière règle à prendre en compte.
Et il faut peut-être ajouter un flag last [L] à la fin de la ligne, séparé par un espace.
Je la mettrais dans les réglages personnalisés, ce qui donne :
################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9.]+)$
spip.php?page=voir_doc&doc=$1/$2/$3 [L]

Si ça ne fonctionne pas, il faut essayer "d'antislasher" le point :
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9\.]+)$
spip.php?page=voir_doc&doc=$1/$2/$3 [L]

Sylvain

Voici la ligne que j'ai utilisee:
RewriteRule ^(IMG)/(pdf|doc|xls)/([-a-zA-Z0-9\.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3 [R,L]

avec et sans antislash toute seile dans un htaccess (avec RewriteEngine On et RewriteBase /) et dans le htaccess qui vient avec SPIP dans la partie reglages personnalises. D'ailleurs les URLs propres sont activees et marchent tres bien.

George

george@middleeastwatch.net a écrit :

Quoting Sylvain <servicesnet@sylvain-mary.net>:

george@middleeastwatch.net a écrit :

Quelle ligne as-tu mis dans le.htaccess et à quel endroit ?
Car si elle est après la ligne "RewriteRule ^[^\.]+(\.html)?$ spip.php [QSA,E=url_propre:$0,L]", c'est normal que ça ne marche pas car le L dans les indique que c'est la dernière règle à prendre en compte.
Et il faut peut-être ajouter un flag last [L] à la fin de la ligne, séparé par un espace.
Je la mettrais dans les réglages personnalisés, ce qui donne :
################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9.]+)$
spip.php?page=voir_doc&doc=$1/$2/$3 [L]

Si ça ne fonctionne pas, il faut essayer "d'antislasher" le point :
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9\.]+)$
spip.php?page=voir_doc&doc=$1/$2/$3 [L]

Sylvain

Voici la ligne que j'ai utilisee:
RewriteRule ^(IMG)/(pdf|doc|xls)/([-a-zA-Z0-9\.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3 [R,L]

avec et sans antislash toute seile dans un htaccess (avec RewriteEngine On et RewriteBase /) et dans le htaccess qui vient avec SPIP dans la partie reglages personnalises. D'ailleurs les URLs propres sont activees et marchent tres bien.

George

Hem, là je ne vois pas. Il faudrait que j'essaye en local, tu veux bien me passer ton squelette voir_doc.html ? Ca m'évitera d'écrire quelque chose pour tester.

Spip 2.0.9 et c'est un intranet. le fichier html existe bien dans squelette et il verifie si une session visiteur est ouverte si non il redirige vers le login public, si oui il ajoute une ligne avec le nom du document au log et il redirige vers le document.

Et je suis en train de me demander si quand la réécriture fonctionnera, cela ne créera pas une redirection infinie, une fois loggué.

Sylvain

george@middleeastwatch.net a écrit :

Quoting Sylvain <servicesnet@sylvain-mary.net>:

george@middleeastwatch.net a écrit :

Quelle ligne as-tu mis dans le.htaccess et à quel endroit ?
Car si elle est après la ligne "RewriteRule ^[^\.]+(\.html)?$ spip.php [QSA,E=url_propre:$0,L]", c'est normal que ça ne marche pas car le L dans les indique que c'est la dernière règle à prendre en compte.
Et il faut peut-être ajouter un flag last [L] à la fin de la ligne, séparé par un espace.
Je la mettrais dans les réglages personnalisés, ce qui donne :
################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9.]+)$
spip.php?page=voir_doc&doc=$1/$2/$3 [L]

Si ça ne fonctionne pas, il faut essayer "d'antislasher" le point :
RewriteRule ^(IMG)/(pdf)/([-a-zA-Z0-9\.]+)$
spip.php?page=voir_doc&doc=$1/$2/$3 [L]

Sylvain

Voici la ligne que j'ai utilisee:
RewriteRule ^(IMG)/(pdf|doc|xls)/([-a-zA-Z0-9\.]+)$ spip.php?page=voir_doc&doc=$1/$2/$3 [R,L]

avec et sans antislash toute seile dans un htaccess (avec RewriteEngine On et RewriteBase /) et dans le htaccess qui vient avec SPIP dans la partie reglages personnalises. D'ailleurs les URLs propres sont activees et marchent tres bien.

George

Hem, là je ne vois pas. Il faudrait que j'essaye en local, tu veux bien me passer ton squelette voir_doc.html ? Ca m'évitera d'écrire quelque chose pour tester.

Spip 2.0.9 et c'est un intranet. le fichier html existe bien dans squelette et il verifie si une session visiteur est ouverte si non il redirige vers le login public, si oui il ajoute une ligne avec le nom du document au log et il redirige vers le document.

Et je suis en train de me demander si quand la réécriture fonctionnera, cela ne créera pas une redirection infinie, une fois loggué.

Sylvain