Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/12/2010, 16h08   #1
Membre actif
 
Inscription : février 2007
Messages : 399
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 399
Points : 156
Points : 156
Par défaut Dirname et url (http://sous-site.site.fr)

Bonjour,

J'ai actuellement fait migré mon site dans un espace sous-site, mais je remarque que les dirname retourne toujours l'adresse de l'ancien site.

Je ne connais pas exactement le fonctionnement de dirname(__FILE__) dans ce genre de structure, mais je ne trouve pas de solution, sachant qu'il y a trop d'appel avec dirname.

si vous avez des idées ça serait sympa!

merci!

je rappelle:
site original: http://www.site.fr
site nouveau:http://sous-site.site.fr
ranell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 01h07   #2
Membre du Club
 
Inscription : janvier 2010
Messages : 22
Détails du profil
Informations personnelles :
Âge : 54
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : janvier 2010
Messages : 22
Points : 68
Points : 68
Par défaut Voir plutôt le fichier .htaccess du serveur Apache

Bonsoir.
Pour ma part, pour les sous-domaines, je n'ai pas utilisé dirname(__FILE__) mais plutôt le fichier .htaccess du serveur Apache (à la base du site pour cette occasion).

Je ne sais si ce sera pareil pour tout le monde (pour toi ?) mais ce bout de code est à tenter :
Code :
1
2
3
4
5
6
7
RewriteEngine on
 
# redirection des sous-domaines
RewriteCond %{REQUEST_URI} !^/sous-domaines
RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+).([^.]+)$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)$ /sous-domaines/%1/$1
"sous-domaines" est un dossier situé à la racine et dans lequel j'entre tous les sous-domaines (des dossiers séparés contenant des sites distincts) nommé ainsi parce que c'est conventionnel (rien n'empèche de changer le nom) - On peut ensuite placer dedans autant de dossiers "sous-site" comprenant un index.php - Et ça fonctionne en tapant l'adresse http://sous-site.site.fr.

<edit>
Dans notre exemple : http://sous-site.site.fr/ (sans les www) est égal à http://www.site.fr/sous-domaines/sous-site/ cela conduit à la même page. (CQFD)
</edit>
Auréance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 09h23   #3
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
@aureance
ça suffit ce truc pour définir un serveur virtuel dans apache?

@ranell
dirname() retourne la partie avec les répertoires du nom d'un fichier. Si tu peux changer la façon dont apache montre le répertoire à ses clients, tu n'as pas forcement à utiliser la structure et les vrais chemins dans ton code. surtout que dirname(__FILE__) == __DIR__
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 09h58   #4
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 699
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 699
Points : 3 269
Points : 3 269
Salut

Juste pour info et pour exemple, l'hébergeur où je suis propose de gérer ça de la manière la plus simple qui soit via le panel Admin.
Ca se résume à créer en 1er le répertoire du sous domaine (genre sousdomaineA)
Puis coté panel de désigner le répertoire (sousdomaineA) puis de donner le nom du sous domaine (genre sous-site).

Il me semble que tout hébergeur digne de ce nom offre ce genre de manip, non ?
Même chose pour la protection des répertoires (genre admin), plus besoin de créer de .htaccess/.htpasswd.
De même que les directives comme register_global, magic_quotes_gpc, short_open_tag, display_errors,etc, etc ...
Il y a pas mal de choses comme ça très courantes gérées depuis le panel.


Du coup, et si ce n'est pas ton cas, je ne sais pas comment le faire via .htaccess, j'ai jamais eu à le faire "à la mano".
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 00h38   #5
Membre du Club
 
Inscription : janvier 2010
Messages : 22
Détails du profil
Informations personnelles :
Âge : 54
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : janvier 2010
Messages : 22
Points : 68
Points : 68
Pour donner un exemple concret, un site en construction actuellement : ( CSS pas encore au point pour les multiples versions I-E )
http://www.86600.fr
et ses deux sous-domaines actuels…
http://gcia-de-lusignan.86600.fr
http://le-sainte-catherine.86600.fr

le .htaccess intégral pour ce site :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# les erreurs ordinaires renvoient à l'accueil…
ErrorDocument 404 http://www.86600.fr
ErrorDocument 403 http://www.86600.fr
ErrorDocument 405 http://www.86600.fr
 
RewriteEngine on
 
# redirection des sous-domaines
RewriteCond %{REQUEST_URI} !^/sous-domaines
RewriteCond %{HTTP_HOST} ^([^.]*)\.?([^.]+).([^.]+)$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)$ /sous-domaines/%1/$1
 
# fix trailing slash
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [L]
Une image simplifiée de la hiérarchie des dossiers :



Vous pouvez voir l'image ci-dessus en situation réelle et de manière équivalente selon votre humeur ici :
tests.86600.fr/images/dossiers-sous-dom.jpg
ou bien ici :
www.86600.fr/sous-domaines/tests/images/dossiers-sous-dom.jpg

Pour de plus amples informations voir ici : http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
Auréance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 14h59   #6
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 699
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 699
Points : 3 269
Points : 3 269
@Auréance
Sauf erreur bien sûr, mais à mon sens dans cette façon de faire on ne peu pas parler de sous-domaine, mais de réécriture d'URL tout simplement.
D'ailleurs, "sous-site1" et "sous-site2" sont tous 2 dans "sous-domaine", qui lui même se trouverait dans 1 seul et unique Host (www, ou htdocs en général).
En faite, on simule plusieurs sites sans pour autant qu'il y ait vraiment plusieurs Host.

Mais pourquoi, bien sûr.


Ce que j'évoquais, c'est vraiment des sous-domaines, et ça peut être structuré comme ci-dessous sans avoir recourt à la moindre réécriture :
Pour un domaine principale comme dev.com
home/rootDev/www (site principale : -http://www.dev.com)
home/rootDev/blog (sous-domaine, un blog : -http://blog.dev.com)
home/rootDev/forum (sous-domaine, un forum : -http://forum.dev.com)

Les 3 sites sont réellement 3 Host bien à part, il y aucun rapport entre eux car aucun n'est imbriqué dans l'autre, ils sont tous au même niveau dans l'espace d'hébergement (comme un mutualisé par ex.).
Ici on a vraiment 1 domaine et 2 sous-domaines (du domaine dev.com).
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2010, 20h18   #7
Membre du Club
 
Inscription : janvier 2010
Messages : 22
Détails du profil
Informations personnelles :
Âge : 54
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : janvier 2010
Messages : 22
Points : 68
Points : 68
@RunCodePhp

Si, je prends cet exemple d'adresses sur webDev : S'agit-il d'une simulation de sous domaines ou de réels sous-domaines selon tes critères ? Je crois que seul un des responsables de ce site pourra nous donner une réponse fiable… sur la méthode employée.

-http://g-rossolini.developpez.com/
-http://www.developpez.com/ (qui fonctionne également avec -http://www.developpez.net/)
Auréance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 08h13   #8
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 699
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 699
Points : 3 269
Points : 3 269
Citation:
Envoyé par Auréance
Je crois que seul un des responsables de ce site pourra nous donner une réponse fiable… sur la méthode employée.
J'ai tendance à dire peu importe la technique qu'ils utilisent, la question n'est pas là à mon sens.
Sinon, oui, on ne peu pas savoir comment ils ont fait.

Ma 1ère intervention était de dire que certains hébergeurs, même mutualisés (comme le mien par exemple), offrent des solutions simples pour gérer plusieurs sites dans un même espace disque sans avoir recourt à un un tas de codes coté Apache dans ou plusieurs .htaccess.
Donc à Ranell de voir ce que lui offre son hébergeur, c'est tout.


Après, on peu toujours débattre sur les solutions.
A titre purement personnel, si un tel service est offert, je ne vois aucune raison de faire autrement, c'est ce compliquer la vie tout simplement.

A coté de ça, toujours en rapport avec ce qu'offre mon hébergeur, et bien quand je créer mon 1er site (dans le www par exemple), l'herbergeur me fourni automatiquement un lien qui au bout me donne des stats assez intéressantes sur le trafique de ce domaine.

Si je crée des sous domaines (comme dans mon exemple), il me fourni aussi autant de liens vers des stats pour chaque sous domaines.
Donc on obtient des stats bien distinct à chaque Host (ou Virtualhost).

De même que, coté accés FTP, il me donne automatiquement des accès avec des droits limités (login/passe) sur chacun des sous-domaines, ce qui veut dire que l'accés à 1 sous domaine ne donne pas le droit de voir les autres sous domaines tout comme le domaine principal.
A coté j'ai quand même un login/pass avec tous les droits, dans l'espace disque entier.
Mais c'est intéressant d'avoir ces accès restreins, comme le donner à une personne qui ne pourra agir que sur le sous domaine en question.

Rien que ces 2 aspets ne sont pas des détails à mon avis.
En faisant "à la mano" comme ton exemple, on perdrait ce genre de petits plus à mon avis.
Mais encore une fois, pourquoi pas, ça reste une solution à part entière.
Puis rien ne dis que de son hébergeur lui offre la possibilité de créer automatiquement des sous domaines.


Comme ça, purement au feeling et pour ce site (ce forum) et comme pour -http://g-rossolini.developpez.com/ par exemple, à mon avis ce sont des sous domaines du domaine developpez.com.
Créer des sous domaines est beaucoup plus simple à faire, tout ça ce gère dans le httpd.conf, car eux ils ont "la main" sur leur serveur, c'est du dédié, c'est certain vu l'énormité du site.
Tout doit être automatisé, quasi de la même manière que fait mon hébergeur à mon sens.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 19h56   #9
Membre du Club
 
Inscription : janvier 2010
Messages : 22
Détails du profil
Informations personnelles :
Âge : 54
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : janvier 2010
Messages : 22
Points : 68
Points : 68
Citation:
Envoyé par RunCodePhp Voir le message
Donc on obtient des stats bien distinct à chaque Host (ou Virtualhost).

De même que, coté accés FTP, il me donne automatiquement des accès avec des droits limités (login/passe) sur chacun des sous-domaines, ce qui veut dire que l'accés à 1 sous domaine ne donne pas le droit de voir les autres sous domaines tout comme le domaine principal.
A coté j'ai quand même un login/pass avec tous les droits, dans l'espace disque entier.
Je crois que je commence à bien comprendre la différence - Ce serait surtout au point de vue FTP et statistiques que ça se passerait.

OK, Merci.
Auréance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 09h32   #10
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 699
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 699
Points : 3 269
Points : 3 269
Citation:
Je crois que je commence à bien comprendre la différence - Ce serait surtout au point de vue FTP et statistiques que ça se passerait.
Ca ne me semble pourtant pas les aspects les plus importants.

La principale différence c'est que de ton coté on a qu'1 seul et unique virtualhost, de l'autre coté, on a autant de virtualhost qu'il y a de sous-domaines (tout ça géré dans le httpd.conf).


D'ailleurs, dans l'exemple que j'ai donné, les 3 virtualhost ne sont pas imbriqués, ils sont tous situés cote à cote.
Ce qui veut dire qu'il est impossible d'atteindre les autres sous-domaines via une quelconque URL (une page, une image, bref, un fichier).
Il n'y aura pas d'autres solutions que de connaitre le nom des sous domaines.
Ce qui veut dire que la sécurité est inévitablement plus accrue en procédant ainsi.


A comparer avec ton exemple, les sous-domaines se trouvent dans le domaine principal (répertoire principale "sous-domaine" lié au virtualhost) et chacun son répertoire, donc tous imbriqués, fait qu'il est potentiellement possible d'atteindre un fichier dans chacun des sous-domaines sans avoir à les connaitre.
Tout repose sur la fiabilité de la réécriture, et encore.
Ca peut être un problème selon qu'on souhaite faire.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h08.


 
 
 
 
Partenaires

Hébergement Web