Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Help: deux fonctionnalités de .htaccess à combiner

3 réponses
Avatar
Jean-Francois Ortolo
Bonjour

Mon hébergeur mutualisé ( Sivit 300Mo ), permet d'utiliser le PHP5, à
condition que les requêtes HTTP soient faites sur le port 81 au lieu du
port 80.

Cet hébergeur indique qu'il est possible de faire une redirection
automatique du port 80 vers le port 81, de toutes les urls soumises à
requêtes sur port 80, en mettant dans le fichier .htaccess situé à la
racine de l'hébergement ( même répertoire racine que celui de index.php
), le contenu suivant:

RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ http://%{HTTP_HOST}:81/%{REQUEST_URI} [QSA,P]



Seuelement voilà: J'ai déjà un fichier .htaccess dans ce répertoire
racine, qui fait une redirection des urls: /index.html et /index.htm ,
vers l'url: /

L'appel à cette dernière url, déclenche le script index.php , qui est
le seul script de page d'accueil contenu dans ce répertoire racine, donc
pris par défaut par le serveur Apache. Ceci est un hack classique pour
éviter le duplicate content.

J'ai également dans un sous -répertoire, un autre fichier.htaccess ,
qui fait de l'urlrewriting, donc de la redirection d'urls.

D'où ma question: Comment faire en sorte, que à la fois les urls et
les ports, soient redirectionnés ?

Logiquement, la redirection des urls, devrait intervenir avant celle
du port 80 vers le port 81. Cela veut-il dire, qu'il suffit de placer
les instructions de redirection des urls, avant celles de redirection
des ports ?

Merci de bien vouloir répondre à cette question, qui concerne surtout
le fichier .htaccess sditué à la racine.

D'autre part... Quand il y a deux fichiers .htaccess, l'un en
répertoire racine, et l'autre dans un sous-répertoire, je suppose que le
fichier .htaccess situé à la racine, est interprété en premier ?

Celà voudrait dire, si la réponse à la question précédente est "oui",
qu'il faudrait que je limite la redirection du port 80 vers le port 81,
à la racine, aux seules urls corespondant à la racine, autrement la
redirection de port, aurait lieu avant l'interprétation du fichier
.htaccess interne, et la nouvelle redirection des urls internes de ce
dernier fichier, serait vers un port, mais lequel, s'il n'est pas
spécifié dans la redirection interne d'url ?

Merci beaucoup de m'indiquer, si et comment il est possible de
combiner la redirection d'url et de port, dans le fichier .htaccess
racine, et le fichier .htaccess interne.

Je précise, que les redirections d'url du fichier .htaccess interne,
sont de la forme:

RewriteCond
RewriteRule


De la même manière donc, que la redirection de port ci-dessus, ou que
la redirection du fichier .htaccess racine.


Merci beaucoup de vos réponses, et excusez-moi si je suis légèrement
hors charte.

Bien à vous.

Amicalement.

Jean-François Ortolo

3 réponses

Avatar
Gerard Menvussa
Jean-Francois Ortolo wrote:
Bonjour

Mon hébergeur mutualisé ( Sivit 300Mo ), permet d'utiliser le PHP5, à
condition que les requêtes HTTP soient faites sur le port 81 au lieu du
port 80.

Cet hébergeur indique qu'il est possible de faire une redirection
automatique du port 80 vers le port 81, de toutes les urls soumises à
requêtes sur port 80, en mettant dans le fichier .htaccess situé à la
racine de l'hébergement ( même répertoire racine que celui de index.php
), le contenu suivant:

RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ http://%{HTTP_HOST}:81/%{REQUEST_URI} [QSA,P]

Seuelement voilà: J'ai déjà un fichier .htaccess dans ce répertoire
racine, qui fait une redirection des urls: /index.html et /index.htm ,
vers l'url: /

L'appel à cette dernière url, déclenche le script index.php , qui est
le seul script de page d'accueil contenu dans ce répertoire racine, donc
pris par défaut par le serveur Apache. Ceci est un hack classique pour
éviter le duplicate content.

J'ai également dans un sous -répertoire, un autre fichier.htaccess ,
qui fait de l'urlrewriting, donc de la redirection d'urls.

D'où ma question: Comment faire en sorte, que à la fois les urls et
les ports, soient redirectionnés ?



Redirigés ?
Les "RewriteRule" sont exécutées à la suite les unes des autres comme
spécifié ici :
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
Il vous suffit donc de concaténer vos deux groupes de directives pour
obtenir l'effet souhaité. (évidement inutile de répéter deux fois
"RewriteEngine On" ...)


Logiquement, la redirection des urls, devrait intervenir avant celle
du port 80 vers le port 81.



Ah bon pourquoi ?


Cela veut-il dire, qu'il suffit de placer
les instructions de redirection des urls, avant celles de redirection
des ports ?



Les deux fonctionnent d'après moi.


Merci de bien vouloir répondre à cette question, qui concerne surtout
le fichier .htaccess sditué à la racine.

D'autre part... Quand il y a deux fichiers .htaccess, l'un en
répertoire racine, et l'autre dans un sous-répertoire, je suppose que le
fichier .htaccess situé à la racine, est interprété en premier ?



http://httpd.apache.org/docs/2.0/howto/htaccess.html#how


Celà voudrait dire, si la réponse à la question précédente est "oui",
qu'il faudrait que je limite la redirection du port 80 vers le port 81,
à la racine, aux seules urls corespondant à la racine, autrement la
redirection de port, aurait lieu avant l'interprétation du fichier
.htaccess interne, et la nouvelle redirection des urls internes de ce
dernier fichier, serait vers un port, mais lequel, s'il n'est pas
spécifié dans la redirection interne d'url ?



Trop compliqué pour rien. Le fichier de la racine sera interprété puis
tous ceux des sous répertoires dans l'ordre. Les règles du fichier
racine transforme l'URL de la requête puis les autre règles s'appliquent
sur l'URL transformé. Voir le schéma à l'adresse :
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html


Merci beaucoup de m'indiquer, si et comment il est possible de
combiner la redirection d'url et de port, dans le fichier .htaccess
racine, et le fichier .htaccess interne.

Je précise, que les redirections d'url du fichier .htaccess interne,
sont de la forme:

RewriteCond
RewriteRule

De la même manière donc, que la redirection de port ci-dessus, ou que
la redirection du fichier .htaccess racine.

Merci beaucoup de vos réponses, et excusez-moi si je suis légèrement
hors charte.



Moi aussi.


Bien à vous.

Amicalement.

Jean-François Ortolo



Pareil.
Avatar
Jean-Francois Ortolo
Bonjour Monsieur

J'aurais besoin d'aide pour fixer le contenu du fichier .htaccess du
répertoire racine.

D'après ce que j'ai compris, les fichiers .htaccess sont interprétés
de la racine au répertoire courant, et dans tous les cas, quand le
répertoire courant est un sous -répertoire, tous les fichiers .htaccess
pères sont pris en compte.

D'autre part, les instructions RewriteRule s'exécutent les unes après
les autres, en ce qui me concerne il ne devrait pas y avoir
d'interaction entre différentes instructions RewriteRule.

Le fichier .htaccess suivant me pose problème, car quand il est
interprété, le seveur Apache entre en boucle, et met un grand nombre de
slashes ( / ) en bout d'url. Je n'arrive donc pas à mettre au point ce
fichier .htaccess, et j'ai besoin de votre aide.

Voici le fichier .htaccess en question :


RewriteBase /

RewriteEngine On

RewriteCond %{HTTP_HOST} !www.ortolojf-courses.com$
RewriteRule (.*) http://www.ortolojf-courses.com/$1 [QSA,L,R01]

RewriteRule ^index.html$ / [QSA,L,R01]
RewriteRule ^index.htm$ / [QSA,L,R01]

RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ http://%{HTTP_HOST}:81/%{REQUEST_URI} [QSA,P]



J'ai testé en mettant la dernière règle RewriteCond/RewriteRule
en premier après le RewriteBase , mais c'est le même résultat.

La règle comportant le HTTP_HOST , doit être valable sur tous les
sous-répertoires.

Je vous serais très reconnaissant, si vous pouviez m'aider à mettre
au point ce fichier .htaccess

Merci beaucoup de votre aide.

Amicalement.

Jean-François Ortolo
Avatar
Jean-Francois Ortolo
Bonjour Monsieur

Je corrige un lapsus que j'ai fait dans ma précédente réponse.

Voir ci-dessous, il faut remplacer "RewriteBase /" par:
"RewriteEngine On"



Jean-Francois Ortolo a écrit :

Bonjour Monsieur

J'aurais besoin d'aide pour fixer le contenu du fichier .htaccess du
répertoire racine.

D'après ce que j'ai compris, les fichiers .htaccess sont interprétés
de la racine au répertoire courant, et dans tous les cas, quand le
répertoire courant est un sous -répertoire, tous les fichiers .htaccess
pères sont pris en compte.

D'autre part, les instructions RewriteRule s'exécutent les unes après
les autres, en ce qui me concerne il ne devrait pas y avoir
d'interaction entre différentes instructions RewriteRule.

Le fichier .htaccess suivant me pose problème, car quand il est
interprété, le seveur Apache entre en boucle, et met un grand nombre de
slashes ( / ) en bout d'url. Je n'arrive donc pas à mettre au point ce
fichier .htaccess, et j'ai besoin de votre aide.

Voici le fichier .htaccess en question :


RewriteBase /

RewriteEngine On

RewriteCond %{HTTP_HOST} !www.ortolojf-courses.com$
RewriteRule (.*) http://www.ortolojf-courses.com/$1 [QSA,L,R01]

RewriteRule ^index.html$ / [QSA,L,R01]
RewriteRule ^index.htm$ / [QSA,L,R01]

RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ http://%{HTTP_HOST}:81/%{REQUEST_URI} [QSA,P]



J'ai testé en mettant la dernière règle RewriteCond/RewriteRule
en premier après le "RewriteEngine On" , mais c'est le même résultat.

La règle comportant le HTTP_HOST , doit être valable sur tous les
sous-répertoires.

Je vous serais très reconnaissant, si vous pouviez m'aider à mettre au
point ce fichier .htaccess

Merci beaucoup de votre aide.

Amicalement.

Jean-François Ortolo




PS Ne pensez-vous pas, qu'il faudrait supprimer le slash ( / ) entre
%{HTTP_HOST}:81 et: %{REQUEST_URI} dans la règle de redirection de
port ?

Mais à ce moment-là, que deviendra un appel à l'url composée du nom
de domaine seul, sans slash ?