J'ai supprimer le index.php de l'url sur ce blog Dotclear 2 avec les rewrites rules d'apache
Par Charles-Christian Croix le lundi, mars 16 2009, 12:18 - Technologic - Lien permanent
Simplement en suivant les conseils de Jean-Christophe Duvivier
J'ai configuré mon blog DC2 comme ceci
- Panneau d'administration > Paramètres du Blog :
- URL du Blog : L'url complète de votre blog (en ce qui me concerne : http://www.karlesnine.com/)
- Méthode de lecture de l'url : Sélectionnez PATH_INFO
- Enregistrez
J'ai évité d'utiliser le .htaccess et j'ai directement porté mes RewriteRule dans la vhost de mon apache 2 comme ceci :
<VirtualHost *:80> ServerName www.karlesnine.com ServerAlias karlesnine.com DocumentRoot /var/www/karlesnine.com ErrorLog /var/log/apache/error.log CustomLog /var/log/apache/access.log combined # DirectoryIndex index.php RewriteEngine On RewriteLog "/var/log/apache/rewrite.log" RewriteLogLevel 0 # Special spam commentaire .ru .china .jp RewriteCond %{REMOTE_ADDR} ^81\.177\.14\.[0-255] [OR] RewriteCond %{REMOTE_ADDR} ^81\.177\.15\.[0-255] [OR] RewriteCond %{REMOTE_ADDR} ^121\.14\.75\.[0-255] [OR] RewriteCond %{REMOTE_ADDR} ^210\.159\.140\.[0-255] [OR] RewriteCond %{REMOTE_ADDR} ^210\.136\.18\.[0-255] [OR] RewriteCond %{REMOTE_ADDR} ^59\.157\.220\.[0-255] [OR] RewriteCond %{REMOTE_ADDR} ^59\.156\.227\.[0-255] [OR] RewriteCond %{REMOTE_ADDR} ^222\.229.\216\.[0-255] [OR] RewriteCond %{REMOTE_ADDR} ^203\.141\.129\.[0-255] [OR] RewriteCond %{REMOTE_ADDR} ^59\.157\.220\. RewriteRule .* - [F,L] RewriteCond %{REQUEST_URI} !^(/admin/|/cache/|/db/|/images/|/inc/|locales/|/plugins/) RewriteCond %{REQUEST_URI} !^(/favicon.ico/|/icons/|/local/|/dotclear/|/themes/|/public/) RewriteCond %{REQUEST_URI} !^/index.php RewriteRule (.*)$ /index.php/$1 </VirtualHost>
J'ai découpe la ligne de RewriteCond en deux pour une question de lecture. J'ai ajouter quelque condition entre autre sur favicon.ico qui malgré le plugin myfavicon n'apparaissait pas.
Commentaires
Houla ! c'est une solution bien compliquée !
En voici une plus simple qui fonctionne bien également
http://blog.jaycreation.net/post/En...
Dit jaycreation je suis pas contre l'auto promo mais venir me dire ma solution est compliqué alors que tu propose strictement la même a base de RewriteRule sur ton post. Les seul différence est l'utilisation .htaccess mais tu dois pas comprendre pourquoi je l'utilise pas et le PATH_INFO vs QUERY_STRING mais la aussi tu dois pas vraiment comprendre la différence.
Bref au choix tu me prendre pour une truffe, ou t'es un cave, note que les deux simultané c'est aussi possible.
Suis pas d'humeur
La solution de Karlesnine est efficace dans la mesure ou il gère des exceptions
Ça évite que tout requête passe par la case "t'es un fichier ou un répertoire" ?
Ce qui a force est lourd pour le système (comprendre apache, php et l'os)
Et je parlerais pas de l'utilisation du .htaccess qui est un tue-serveur ^^
Par contre moi j'aurais poussé le vice a faire ceci :
RewriteRule .* /index.php/%{REQUEST_URI}
Ca évite de stocker une variable qui existe déjà
(note que tu peux rajouter %{QUERY_STRING} juste derriere si tu veux les conserver, mais j'en doute :)
Merci Kathryl, le pb du fichier .htaccess c'est les I/O pour chaque hit, bon ok le système à un cache mais bon c'est mal. Quand en plus tu ajoute un test sur la nature de l'élément appelé c'est du suicide avec la moindre audience conséquente.
@Kathryl %{QUERY_STRING} dans un rewrite rule, c'est mal ! Les flags sont là pour ça. En l'occurence, il suffit d'utiliser le flag QSA :p
Bon et bien je vais finir par le remercier le perdreau, j'apprend des truc avec les réactions :)
@karles comme quoi, le backlink bourrin et trollesque a du bon parfois ;-)
@JB anéfé ! j'oublie toujours ce flag :)
Mais la variable existe dans tout les cas ;)
vi, elle existe, mais c'est plus propre de ne l'utiliser que dans les RewriteCond ;-)