1 votes

Apache - Confusion des règles de réécriture

Redirect 301 /resort.php/FOO/BAR http://www.sitename.com.com/index.php
RewriteRule ^/direct/(.*) /direct/$1 [QSA,L] # access non i18n files directly
RewriteRule ^/([a-z]{2}\/.*)        /$1 [QSA,L] #any language subdirectory should be left alone
RewriteRule ^/(.*\/$)               /en/$1index.php [QSA,L] #fix for links ending in /
RewriteRule ^/(.*\.php)             /en/$1 [QSA,L]  #any php file with no language subdirectory redirects to the default language

Comment expliquer que la première redirection 301 ne mène pas à la page d'accueil ? Quand je la remplace par..

RewriteRule ^/resort.php(.*) http://www.sitename.com/index.php [R=301,L]

Ça commence à fonctionner. Je suis sûr que c'est parce que j'ai un tas de règles et qu'il va à l'une d'entre elles et saute à l'autre, mais je suis un peu perdu et peut-être qu'un gourou pourrait expliquer cela plus clairement.

Ma structure de répertoire est la suivante :

/en/index.php
/direct/

Il n'y a pas de /index.php dans le Root, je le redirige vers en initialement.

3voto

skaffman Points 197885

El Redirect est en train de se battre avec mod_rewrite. Ce dernier est assez agressif, et écrase probablement l'en-tête HTTP de redirection défini sur la réponse par la directive Redirect directive.

Vous avez déjà trouvé la solution - utilisez un RewriteRule pour effectuer la redirection. L'indicateur [L] signifie "dernière règle - ne pas en traiter d'autres", ce qui permet d'éviter que les règles n'interfèrent les unes avec les autres. L'indicateur simple Redirect n'est qu'un moyen simple d'obtenir la fonctionnalité plus simple de la directive RewriteRule .

0voto

Nona Urbiz Points 1306
RewriteRule /resort.php/FOO/BAR http://www.sitename.com.com/index.php [R=P, L]

vos règles ne sautent pas partout, en fait, le drapeau L signifie DERNIERE règle, donc quand une règle est déclenchée, le fichier cesse d'être lu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X