29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
17-02-2012 : Pétition pour une protection de l’apiculture et des consommateurs face au lobby des OGM
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / eZ Publish / Configuration / eZ Publish : gestion des URI (supprimer index.php et le siteaccess)





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox
zero papier grâce aux catalogues et promos en ligne de bonial

eZ Publish : gestion des URI (supprimer index.php et le siteaccess)

Date de publication: le jeudi 5 juillet 2007 à 17h31
Dernière modification: par Pascal BOYER le mercredi 28 octobre 2009 à 17h25
« Article précédent: eZ Publish : configurer le moteur de recherche
» Article suivant: eZ Publish : installer ezwebin_classes.ezpkg à la main

Cet article explique comment:

  • supprimer le nom d'un siteaccess dans les URI de eZ Publish
  • supprimer index.php des URI de eZ Publish (ce qui revient à mettre en place un hôte virtuel)
  • les problèmes lié à l'affichage de Online Editor 5.0

Configuration générale

Siteaccess public

Voici le contenu de la section SiteAccessSettings du fichier de surcharge site.ini.append.php du siteaccess public:

[SiteAccessSettings]
 CheckValidity=false
 MatchOrder=uri
 RequireUserLogin=false
 ShowHiddenNodes=false

Siteaccess d'administration

Voici le contenu de la section SiteAccessSettings du fichier de surcharge site.ini.append.php du siteaccess d'administration:

[SiteAccessSettings]
CheckValidity=false
MatchOrder=uri
RequireUserLogin=true
ShowHiddenNodes=true

Surcharge générale

Voici le contenu de la section SiteAccessSettings du fichier de surcharge générale /ovirride/ site.ini.append.php:

[SiteSettings]
DefaultAccess=public_siteaccess
 
[SiteAccessSettings]
AvailableSiteAccessList[]=public_siteaccess
AvailableSiteAccessList[]=admin_siteaccess
RelatedSiteAccessList[]=public_siteaccess
RelatedSiteAccessList[]=admin_siteaccess

Après avoir ainsi configuré ces trois fichiers, on vide manuellement ces deux caches:

  • /var/cache/
  • /var/plain_site/cache/

A ce stade, on accède au site public avec des URI de ce type:

  • http://www.luxpopuli.fr/index.php/public_siteacess/ma_page

et à l'interface d'administration, avec:

  • http://www.luxpopuli.fr/index.php/admin_siteacess/

Supprimer le siteaccess des URI de eZ Publish

Pour le siteaccess par défaut uniquement

La méthode très simple décrite ci-dessous permet, sans aucune modification du fichier de configuration du serveur Apache ou du fichier .htaccess, de supprimer l'affichage du nom du siteaccess dans les URI de eZ publish.

Cependant, cette technique ne s'applique qu'au siteaccess défini comme siteaccess par défaut, c'est à dire défini par le paramètre DefaultAccess de la section [SiteSettings] du fichier de configuration override/ site.ini.append.php.

Quant au siteaccess d'administration il restera accessible avec un URI traditionnel de type:

http://www.monsite.fr/index.php/siteaccess_admin

Donc, pour le siteaccess public par défaut, il suffit d'ajouter le paramètre:

RemoveSiteAccessIfDefaultAccess=enabled

...à la section [SiteAccessSettings] du fichier site.ini.append.php.de ce siteaccess.

Ensuite on vide les caches.

:
Il est intéressant de remarquer que les URI incluant quand même le nom du siteaccess continuent à fonctionner.

Supprimer index.php des URI de eZ Publish

:
Il n'y a aucune configuration particulière de eZ Publish à réaliser.

Fichier httpd.conf

Voici la section VirtualHost du fichier de configuration httpd.conf du serveur Apache:

NameVirtualHost 88.191.68.68:80
 
<VirtualHost 88.191.68.68:80>
 
    <Directory /usr/local/www>
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <IfModule mod_php4.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 ^/var/storage/.* - [L]
        Rewriterule ^/var/[^/]+/storage/.* - [L]
        RewriteRule ^/var/cache/texttoimage/.* - [L]
        RewriteRule ^/var/[^/]+/cache/texttoimage/.* - [L]
        Rewriterule ^/design/[^/]+/(stylesheets|images|javascript)/.* - [L]
        Rewriterule ^/share/icons/.* - [L]
        Rewriterule ^/extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?)/.* - [L]
        Rewriterule ^/packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
        RewriteRule ^/packages/styles/.+/thumbnail/.* - [L]
        RewriteRule ^/favicon.ico - [L]
        RewriteRule ^/robots.txt - [L]
 
        # Les 3 lignes ci-dessous permettent de rajouter www. devant toute URI qui ne le contiendrait pas.
        RewriteCond %{HTTP_HOST}   !^www\.luxpopuli\.fr [NC]
        RewriteCond %{HTTP_HOST}   !^$
        RewriteRule ^/(.*)         http://www.luxpopuli.fr/$1 [L,R]
 
        # La ligne ci-dessous est correcte et enlêve bien "index.php" des URI
        RewriteRule ^/* /index.php
 
    </IfModule>
 
    DocumentRoot /usr/local/www
    ServerName www.luxpopuli.fr
 
</VirtualHost>

:
Avec une telle configuration, si vous souhaitez, par exemple, installer phpMyAdmin dans un sous-répertoire (disons: phpmyadmin/) alors, pour y accéder avec un URI du type http://www.luxpopuli.fr/phpmyadmin/ vous devez ajouter une telle ligne:

RewriteRule ^/phpmyadmin - [L]

Sinon vous obtiendrez un message d'erreur vous indiquant que eZ Publish n'a pas trouvé de module phpMyAdmin.

Avec le fichier .htaccess

Si nous n'avons pas accès au fichier de configuration du serveur Apache, il nous est tout de même possible de configurer le fichier .htaccess placé à la racine du répertoire d'installation de eZ Publish afin de supprimer l'affichage du fichier index.php des URI créés par eZ Publish.

Ceci sera valable pour les URI du site public comme pour celles du site d'administration.

Un post de référence: htaccess (removing index.php) and online editor

A partir des indications contenues dans ce post nous pouvons parvenir à supprimer index.php des URI en mettant:

RewriteEngine On
RewriteRule ^var/storage/.* - [L]
RewriteRule ^var/[^/]+/storage/.* - [L]
RewriteRule ^var/cache/texttoimage/.* - [L]
RewriteRule ^var/[^/]+/cache/texttoimage/.* - [L]
RewriteRule ^design/[^/]+/(stylesheets|images|imagespl|javascript)/.* - [L]
RewriteRule ^share/icons/.* - [L]
RewriteRule ^sitemaps/.* - [L]
RewriteRule ^extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?)/.* - [L]
RewriteRule ^extension/tracewatch/.* - [L]
RewriteRule ^packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
RewriteCond $1 !^index.php$
RewriteRule (.*) /index.php

dans le .htaccess et en positionnant:

ForceVirtualHost=true

dans la section [SiteAccessSettings] du fichier de configuration override/ site.ini.append.php puis en vidant tous les caches.

La méthode présentée ci-dessus n'engendre aucun problème avec le Online Editor.

:
Il est important de retenir que nous devons ajouter une ligne RewriteRule chaque fois que le système doit accéder à un répertoire. Par exemple, supposons que nous placions des images dans un répertoire IMG/ situé à la racine de notre site. Pour que le système puisse accéder à ces images, il est indispensable d'ajouter cette ligne:

RewriteRule ^IMG/.* - [L]

Voici le contenu partiel du fichier override/ site.ini.append.php

[SiteSettings]
DefaultAccess=siteaccess_public
SiteList[]=siteaccess_public
 
[SiteAccessSettings]
ForceVirtualHost=true
AvailableSiteAccessList[]=siteaccess_public
AvailableSiteAccessList[]=siteaccess_admin
MatchOrder=uri
HostMatchMapItems[]
RemoveSiteAccessIfDefaultAccess=enabled

Problème d'affichage de Online Editor 5.0

Il est possible que vous rencontriez un problème d'affichage de Online Editor 5.0 une fois terminée la configuration du fichier .htaccess sur votre serveur mutualisé.

En plus des indications fournies dans ce post de référence , voici un fichier .htaccess opérationnel tel que j'ai dû le configurer sur un serveur mutualisé chez l'hébergeur MavenHosting :

DirectoryIndex index.php
 
RewriteEngine On
RewriteRule ^var/storage/.* - [L]
RewriteRule ^var/[^/]+/storage/.* - [L]
RewriteRule ^var/cache/texttoimage/.* - [L]
RewriteRule ^var/[^/]+/cache/texttoimage/.* - [L]
RewriteRule ^design/[^/]+/(stylesheets|images|imagespl|javascript)/.* - [L]
RewriteRule ^share/icons/.* - [L]
RewriteRule ^sitemaps/.* - [L]
RewriteRule ^extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?)/.* - [L]
RewriteRule ^extension/tracewatch/.* - [L]
RewriteRule ^packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
RewriteRule !(\.(gif|jpe?g?|png|css|js|swf|html?)|var(.+)storage.pdf(.+)\.pdf)$ index.php

Il faut également penser à positionner:

ForceVirtualHost=true

dans la section [SiteAccessSettings] du fichier de configuration override/ site.ini.append.php puis à vider tous les caches.

Commentaires