Sous domaine "dynamique"

WRInaute occasionnel
Rien à faire ceci ne veut pas marcher :

Code:
RewriteCond %{http_host} ^a.([a-z0-9]+)\.achatchartres\.com$ [NC]
  RewriteRule ^$ /aliasredirect.php?aliasname=$1 [NC,L]

Le but est et bien évidement de récuperer le nom du sous domaine pour etre rediriger au bonne endroit. mais $1 reste vide et donc aliasname aussi du coup...

Quelqu'un aurait-il une idée du problème ?

PS : Les sous domaines qu'elle qu'il soit sont bien rediriger vers mon site, le serveur est donc très bien configuré, c'est juste à mon avis un problème de syntaxe sur le htaccess
 
WRInaute occasionnel
Pour faire plaisir, une tentative. C'est inspiré de Virtual User Hosts de l'URL Rewriting Guide

Code:
RewriteEngine on
RewriteCond   %{HTTP_HOST}	^a\.([a-z0-9]+)\.achatchartres\.com$ [NC]
RewriteRule   ^(.+)		%{HTTP_HOST}$1          [C]
RewriteRule   ^a\.([a-z0-9]+)\.achatchartres\.com(.*) /aliasredirect.php?aliasname=$1 [NC]

Ce n'est bien entendu pas testé.
 
WRInaute occasionnel
Je n'ai jamais essayé, mais RewriteLog "/usr/local/var/apache/logs/rewrite.log" peut servir.

Il manque peut-être un $ dans la chose :
Code:
RewriteRule   ^(.*)$    %{HTTP_HOST}$1          [C]
et ca sert à récupérer l'adresse de l'hôte pour pouvoir travailler dessus, si ce n'était pas clair.
 
WRInaute occasionnel
Alors, un exemple qui marche chez moi, sur un Apache 2.0. L'adresse de test est h--p://10.0.0.4:8898/x/ok, le script qui récupère est un bout de Perl qui affiche le port et le reste de l'URL. Ca donne

Code:
RewriteEngine on

RewriteCond   %{HTTP_HOST}   ^([\d\.\:]+)$
RewriteRule   ^(.+)$      %{HTTP_HOST}$1          [C]
RewriteRule   ^.*:([^\/]+)/(.*)$ /cgi-bin/x.pl?x=$1&y=$2 [PT,NC]
 
Nouveau WRInaute
Bonjour,

Ouf, enfin un forum où j'ai des chances d'obtenir une réponse :)

Donc, mon probèle est à peu près le même, j'ai la règle suivante, basée sur le VIrtual Users Hosts de la doc d'apache (pour l'instant dans un .htaccess) :

Code:
Options +FollowSymlinks
RewriteEngine on
RewriteCond   %{HTTP_HOST}                 ^[^.]+\.arrakeen\.net$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^([^.]+)\.arrakeen\.net(.*) /home/e-smith/files/ibays/$1/html$2

mais j'obtiens l'erreur suivante :
Code:
File name too long: access to /home/e-smith/files/ibays/host/htmlhome/e-
[...]
files/ibays/host/htmlhome/e-smith/files/ibays/host/htmlindex.php/e-smith/files/ibays/host/htmlindex.php failed

lorsque j'accède à host.arrakeen.net

qu'ais-je fais de mal ?
merci d'avance !
Etienne
 
WRInaute occasionnel
A mon avis, le problème vient du fait que les directives résident dans un .htacces . D'après la doc Apache
When you manipulate a URL/filename in per-directory context mod_rewrite first rewrites the filename back to its corresponding URL (which is usually impossible, but see the RewriteBase directive below for the trick to achieve this) and then initiates a new internal sub-request with the new URL. This restarts processing of the API phases.
, ce qui en résumé signifie que, quand l'URL est manipulée dans .htaccess, une nouvelle phase de traitement est relancée après la réécriture.

On supposse un appel à host.arrakeen.net/index.php
La première réécriture donne /home/e-smith/files/ibays/host/htmlindex.php , à peu près ce que tu veux, le / devant index.php disparaissant parce qu'en mode répertoire, Apache ne te passe que le nom de fichier, pas l'URL complète. Comme on travaille dans un .htaccess, nouvelle passe, sur la nouvelle adresse. La condition sur l'hôte étant toujours vraie, la transformation est encore appliquée, d'où /home/e-smith/files/ibays/host/htmlindex.php/home/e-smith/files/ibays/host/htmlindex.php . Le processus est répété jusqu'à ce qu'Apache baisse les bras et indique qu'il y a un problème.

Je peux me tromper, mais essaie de visualiser les logs de réécriture
Code:
RewriteLog /var/log/apache/rewrite.log
RewriteLogLevel 9
ca t'en dira plus.

La solution est soit de passer les règles dans le httpd.conf, soit de durcir la condition pour que la boucle ne puisse pas se produire.
 
Nouveau WRInaute
Salut,

merci pour la réponse.
Je sais pas pourquoi, apache veut pas logger les rewrite :/

sinon, j'ai essayé de le mettre dans le httpd.conf (j'ai fait une copie conforme du .htaccess dans le conf, un peu n'importe où :/) et j'ai supprimé le .htaccess

mais du coup, je n'ai même plus d'erreur.
y a t il qqchose de particulier à faire ?
Merci !
 
WRInaute impliqué
Troops,

Ton $1 fait référence à des parenthèses qui sont sur la ligne précédente...
Ci pas possible de faire ça, il faut qu'elles soient sur la même ligne.
 
WRInaute occasionnel
Les logs de réécriture aideraient bien, tout de même. Ils ne sont pas pris en compte, même en les mettant dans le httpd.conf ? Et là, quand tu demandes la page, tu as un 404?
 
Nouveau WRInaute
ben, en fait, j'ai rajouté le log de réécriture dans le httpd.conf.
Seulement, je ne suis pas sûr si j'ai bien fait. je l'ai rajouté tel quel (juste après les règles, en fait :/), en plein milieu du .conf, et ça me parait un peu bizarre.

sinon, je n'ai aucune erreur, et le rewrite.log reste désepérément vide :/
 
Nouveau WRInaute
Quelques précisions :

ce que je veux faire exactement :
lorsqu'on se connecte à host.arrakeen.net/..., que apache affiche les pages sous /home/e-smith/files/ibays/host/html/...
et ce sans créer de sous domaines.

et j'aimerais que les règles soient stockées dans le httpd.conf (j'essayais sur un .htaccess pour tester, seulement) mais je ne sais pas comment le mettre.
j'aimerais aussi pouvoir logger les réécritures.

merci d'avance :)
 
WRInaute occasionnel
Au cas où le dénouement du problème de Lanfeust vous intéresserait :
- le problème venait effectivement en partie du .htaccess
- une fois dans le httpd.conf, la condition sur l'hôte n'était plus vérifiée, la variable HTTP_HOST n'étant plus convertie (%{HTTP_HOST} était interprété en %HTTP_HOST). Il a fallu modifier les variables serveur en %\{ NAME_OF_VARIABLE \}

Il semblerait que la configuration du système de Lanfeust soit très, très personnelle.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut