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














