Petite galère exotique avec Apache et sous domaine

Bonjour à tous,

Je bute vraiment sur un bug à la c__ !

Alors voilà, j’ai un dédié sous Debian pour héberger des sites via Apache en mode vhost.

J’ai une quinzaine de sites qui tournent, et à chaque nouveau site la même manip :

  • duplication d’un vhost
  • renommage du vhost copié
  • modification du vhost pour coller au domaine du nouveau site, au documentroot, etc.
  • a2ensite sur le vhost
  • reload d’Apache

Et habituellement c’est OK, sauf que là mon http-//www-monsite-com est systématiquement redirigé sur le vhost par defaut (la fameuse page “It works!” d’Apache) alors que test.monsite.com ou admin.monsite.com vont bien taper dans le documentroot indiqué.

Il n’y a rien à faire, que je mette le http-//www-monsite-com en ServerName ou en ServerAlias, Apache ne lance pas le documentroot prévu mais sa page It works !!

Ca devient grisant, j’ai essayé de virer plein de choses dans le vhost, de désactiver le rewrite, de créer un nouveau vhost, etc. rien n’y fait, on dirait que le www. est maudit !

Auriez-vous une idée pour dépister ce problème ? peut-on demander à Apache de nous dire via une commande magique quel est son raisonnement pour tel domaine appellé (une sorte de tracert) ?

Merci d’avance !

Edité par lol

Salut,
Et si tu nous donnais le vhost après ces opérations ?

[quote=“vallica”]- duplication d’un vhost

  • renommage du vhost copié
  • modification du vhost pour coller au domaine du nouveau site, au documentroot, etc.
  • a2ensite sur le vhost
  • reload d’Apache[/quote]

PS: je casse les lien tu ne m’en voudras pas… :wink:

Bonjour :wink:

Alors voici le contenu du vhost :

[code]<VirtualHost *:80>

    DocumentRoot    /www/mon-site-internet.com/htdocs
    ServerName      www.mon-site-internet.com
    ServerAlias     admin.mon-site-internet.com
    ServerAlias    test.mon-site-internet.com

    ErrorLog /www/mon-site-internet.com/logs/error.log
LogLevel warn
CustomLog /www/mon-site-internet.com/logs/access.log combined
ServerSignature Off

<Directory /www/mon-site-internet.com/htdocs>
            Allow from all
            Options FollowSymLinks
    AllowOverride None
</Directory>

<IfModule mod_php5.c>
    php_admin_flag safe_mode Off
    php_admin_value register_globals    0
    php_value magic_quotes_gpc  0
    php_value magic_quotes_runtime  0
    php_value allow_call_time_pass_reference 0
</IfModule>

DirectoryIndex index.php

<IfModule mod_rewrite.c>

RewriteEngine On
Rewriterule ^/extension/admin2pp/share/icons/crystal-admin-opt43/.* - [L]
RewriteRule ^/([^/]+/)?content/treemenu.* /index_treemenu.php [L]
RewriteRule ^/var/([^/]+/)?storage/.* - [L]
RewriteRule ^/var/([^/]+/)?cache/(texttoimage|ezhumancaptcha|public)/.* - [L]
RewriteRule ^/design/[^/]+/(stylesheets|images|javascript)/.* - [L]
RewriteRule ^/share/icons/.* - [L]
RewriteRule ^/extension/[^/]+/design/[^/]+/(stylesheets|fonts|flash|images|lib|javascripts?)/.* - [L]
RewriteRule ^/packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
RewriteRule ^/packages/styles/.+/thumbnail/.* - [L]
RewriteRule ^/var/storage/packages/.* - [L]
RewriteRule ^/title/.* - [L]

    #  Makes it possible to place your favicon at the root of your
    #  eZ Publish instance. It will then be served directly.
    RewriteRule ^/favicon\.ico - [L]
    #  Uncomment the line below if you want you favicon be served from the standard design.
    #  You can customize the path to favicon.ico by replacing design/standard/images/favicon.ico
    #  by the adequate path.
    #RewriteRule ^/favicon\.ico /design/standard/images/favicon\.ico [L]
    RewriteRule ^/design/standard/images/favicon\.ico - [L]

    # Give direct access to robots.txt for use by crawlers (Google, Bing, Spammers..)
    RewriteRule ^/robots\.txt - [L]

    # Platform for Privacy Preferences Project ( P3P ) related files for Internet Explorer
    # More info here : http://en.wikipedia.org/wiki/P3p
    RewriteRule ^/w3c/p3p\.xml - [L]

    # Uncomment the following lines when using popup style debug.
    # RewriteRule ^/var/cache/debug\.html.* - [L]
    # RewriteRule ^/var/[^/]+/cache/debug\.html.* - [L]
    
    #RewriteRule ^/fr/(*)$  /index\.php$1
    RewriteRule ^/fr/(.*)$ /$1 [QSA,L,R=301,NC]
    RewriteRule /index.php/fr / [QSA,L,R=301,NC]
    RewriteRule ^/index.php/fr/(.*)$ /$1 [QSA,L,R=301,NC]
    RewriteRule .* /index\.php

    </IfModule>

[/code]

Je précise que le nom de domaine est composé de 3 mots séparés par le tiret - (hyphen), au cas où ce serait la source du problème, mais j’en doute car j’ai déjà des sites configurés ainsi…

Moi j’aurais mis plutôt :

...
ServerName      mon-site-internet.com
...

Sans le www. Car en général, le www est un alias, et en CNAME dans la zone dns du domaine.

Alors j’ai fait ça parce que coté registar (Gandi) je fais une redirection de mon-site-internet.com vers www.mon-site-internet.com, ainsi mon-site-internet.com n’arrive jamais directement sur mon serveur.

Je vais quand même essayer de désactiver cette redirection voir ce que ça donne…

[quote=“vallica”]Alors j’ai fait ça parce que coté registar (Gandi) je fais une redirection de mon-site-internet.com vers mon-site-internet.com, ainsi mon-site-internet.com n’arrive jamais directement sur mon serveur.

Je vais quand même essayer de désactiver cette redirection voir ce que ça donne…
[/quote]

Généralement, on ne fait pas de redirection de example.com vers www.example.com à partir de l’interface de redirection du registrer, mais à partir d’un enregistrement CNAME dans la zone dns du domaine comme ceci :

example.com A ip
www.example.com CNAME example.com

=> puis tu attend quelques minutes pour la propagation de dns.

Sinon, si tu ne veux pas utiliser CNAME et rester sur la redirection, alors il faut créer un pointage de type A pour www.example.com, mais ce n’est pas propre :

example.com A ip
www.example.com A ip

Salut !

J’ai donc supprimé la redirection (qui en fait chez Gandi semble générer une entrée dans la zone DNS pour info), et j’ai fait un pointeur type A de www vers l’IP du serveur, exactement comme pour le sous domaine admin.

Seulement après relecture du vhost, reload d’Apache, rien n’y fait, j’ai le admin qui tape bien dans mon documentroot et pas le www alors qu’ils sont déclarés dans le meme vhost, c’est dingue ! je deviens fou parce que je ne vois vraiment plus d’où le problème peut venir =(

Qu’as-tu dans ton vhost par défaut ?

Bonjour,

Voici le contenu de /etc/apache2/sites-available/default

[code]<VirtualHost *:80>
ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

[/code]

Je ne vois rien de spécial, et puis mes autres sites fonctionnent très bien avec ce principe de vhost, c’est rageant !

Salut,
je vois beaucoup de Rewriterule, as-tu essayé en commentant tout ça ?

Oui, essayé à l’instant, toutes les rewrites commentées, toujours pareil, j’arrive sur le default vhost :119

Commentes ton “default” histoire de …

Passes ton vhost en mode debug (LogLevel debug)

Suivre le tout en live (multitail à installé si ce n’est fait)

Salut,

Alors j’ai commenté le documentroot dans le vhost par defaut : la page change bien, j’ai un 403 forbidden au lieu du it work’s, ce qui confirme juste que le vhost par default lancé par Apache est bien celui supposé et collé ci-dessus.

Ensuite j’ai passé le loglevel à debug, reload d’Apache, et tentatives d’accès : rien dans les logs à part un favicon manquant (normal) et j’arrive toujours sur le default vhost :119

Résolu : j’avais une entrée dans le /etc/hosts qui faisait conflit… pffff :arrow_right:

Salut,

Le principal est d’avoir trouvé, et nous ça nous a permis de réfléchir un peu… :005
J’enlève [Résolu] qui est remplacé par la coche verte (c’est plus joli… :wink:)

Oui, espérons que ça puisse aider dans le futur !