Lighttpd ModRewrite pour Drupal, Wordpress, Dotclear et Zenphoto

Durant la migration sur Lighttpd, outre l'installation de php5 en fastcgi, j'ai du revoir l'ensemble des règles de rewrite des mes sites. Voici quelques règle de réécriture Lighttpd pour quelques application web.

Drupal 6

  1. $HTTP["host"] =~ "(^|\.)foo\.bar$" {
  2.   url.rewrite-once = (
  3.     "^/(files/.*)$" => "/$1",
  4.     "^/system/test/(.*)$" => "/index.php?q=system/test/$1",
  5.     "^/([^.?]*)\?(.*)$" => "/index.php?q=$1&$2",
  6.     "^/([^.?]*)$" => "/index.php?q=$1",
  7.     "^/search/(.*)$" => "/index.php?q=search/$1",
  8.     "^/(.*).xml$" => "/index.php?q=$1.xml"
  9.     "^/([^.?]*\.html)$" => "/index.php?q=$1",
  10.     "^/([^.?]*\.htm)$" => "/index.php?q=$1"
  11.   )
  12.   url.access-deny = ( "~", ".inc", ".engine", ".install", ".module", ".sh", "sql", ".theme", ".tpl.php", ".xtmpl", "Entries", "Repository", "Root" )
  13. }

La base vient de ce site mais j'ai apporté quelques modifications pour gérer le sitemap.xml entre autre.

Normalement ces règles doivent fonctionner sur Drupal 5, mais si vous avez quand même des problèmes, j'ai testé avec succès la solution ci-dessous.

Drupal 5

  1. $HTTP["host"] =~ "(^|\.)foo\.bar$" {
  2.   index-file.names = ( "index.php" )
  3.   magnet.attract-physical-path-to = ( "/etc/lighttpd/drupal.lua" )
  4.   url.access-deny = ( "~", ".inc", ".engine", ".install", ".module", ".sh", "sql", ".theme", ".tpl.php", ".xtmpl", "Entries", "Repository", "Root" )
  5. }

j'ai trouvé cette manière de procéder ici.

Cette règle utilise un fichier 'drupal.lua' d'on voici le contenu :

  1. attr = lighty.stat(lighty.env["physical.path"])
  2. if (not attr) then
  3.   lighty.env["uri.query"] = "q=" .. lighty.env["uri.path"]
  4.   lighty.env["uri.path"] = "/index.php"
  5.   lighty.env["physical.rel-path"] = lighty.env["uri.path"]
  6.   lighty.env["physical.path"] = lighty.env["physical.doc-root"] .. lighty.env["physical.rel-path"]

Wordpress

  1. $HTTP["host"] =~ "(^|\.)foo\.bar$" {
  2.   url.rewrite = (
  3.     "^/(wp-.+).*/?" => "$0",
  4.     "^/(sitemap.xml)" => "$0",
  5.     "^/(xmlrpc.php)" => "$0",
  6.     "^/(.+)/?$" => "/index.php/$1"
  7.   )
  8. }

J'ai trouvé cette règle sur ce site.

Dotclear

  1. $HTTP["host"] =~ "(^|\.)foo\.bar$" {
  2.   url.rewrite = (
  3.     "^/blog/[0-9]{4}/[0-9]{2}/?$" => "/blog/index.php/$1/$2",
  4.     "^/blog/[0-9]{4}/[0-9]{2}/[0-9]{2}/?$" => "/blog/index.php/$1/$2/$3",
  5.     "^/blog/[0-9]{4}/[0-9]{2}/[0-9]{2}/(.+)$" => "/blog/index.php/$1/$2/$3/$4",
  6.     "^/blog/([A-Z][A-Za-z0-9_-]*)/?$" => "/blog/index.php/$1",
  7.     "^/blog/([A-Z][A-Za-z0-9_-]*)/[0-9]{4}/?$" => "/blog/index.php/$1/$2",
  8.     "^/blog/([A-Z][A-Za-z0-9_-]*)/[0-9]{4}/[0-9]{2}/?$" => "/blog/index.php/$1/$2/$3",
  9.     "^/blog/([A-Z][A-Za-z0-9_-]*)/[0-9]{4}/[0-9]{2}/[0-9]{2}/?$" => "/blog/index.php/$1/$2/$3/$4",
  10.     "^/blog/([a-z]{2}(-[a-z]{2})?)$" => "blog/index.php/lang=$1",
  11.     "^/blog/ecrire/(.+)?$" => "blog/ecrire/$1",
  12.     "^/blog/tag/(.+)?$" => "blog/index.php/tag/$1"
  13.   )
  14. }

Cette règle provient de ce site.

Zenphoto

  1. $HTTP["host"] =~ "(^|\.)foo\.bar$" {
  2.   var.zendir = "/"
  3.   url.rewrite-once = (
  4.     "^"+zendir+"admin/?$" => "$0",
  5.     "^("+zendir+"(albums|cache|themes|zp-core).*)$" => "$1",
  6.     "^("+zendir+"\?.*)" => "$1",
  7.     "^("+zendir+"[a-z]+.php(\?.*)?)$" => "$1",
  8.     "^"+zendir+"page/([0-9]+)/?$" => zendir+"index.php?page=$1",
  9.     "^"+zendir+"page/([A-Z]a-z0-9\-_]+)/?$" => zendir+"index.php?p=$1",
  10.     "^"+zendir+"(.*)/page/([0-9]+/)?$" => zendir+"index.php?album=$1&page=$2",
  11.     "^"+zendir+"page/([A-Za-z0-9\-_]+)/([A-Za-z0-9\-_]+)/?$" => zendir+"index.php?p=$1&words=$2",
  12.     "^"+zendir+"page/([A-Za-z0-9\-_]+)/([A-Za-z0-9\-_]+)/([0-9]+)/?$" => zendir+"index.php?p=$1&words=$2&page=$3",
  13.     "^"+zendir+"page/([A-Za-z0-9\-_]+)/archive/([A-Za-z0-9\-_]+)/?$" => zendir+"index.php?p=$1&date=$2",
  14.     "^"+zendir+"page/([A-Za-z0-9\-_]+)/archive/([A-Za-z0-9\-_]+)/([0-9]+)/?$" => zendir+"index.php?p=$1&date=$2&page=$3",
  15.     "^"+zendir+"(.*)/image/(thumb|[0-9]{1,4})/([^/\\]+)$" => zendir+"zp-core/i.php?a=$1&i=$3&s=$2",
  16.     "^"+zendir+"(.*)/image/([^/\\]+)$" => zendir+"zp-core/i.php?a=$1&i=$2",
  17.     "^"+zendir+"(.*)/?$" => zendir+"index.php?album=$1",
  18.   )
  19. }

J'ai trouvé ces règles sur le site officiel de Zenphoto.

Évidement, jetez aussi un œil à la documentation de ModRewrite de Lighttpd pour plus d'informations.

Poster un nouveau commentaire

  • Balises HTML autorisées: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <img> <strike> <blockquote>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les smileys texte sont replacés par des smyleys images.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <as3>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <ini>, <java>, <javascript>, <mysql>, <php>, <plsql>, <python>, <robots>, <ruby>, <smarty>, <vb>, <xml>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • Les liens d'images avec le tag 'rel="lightbox"' dans la balise <a> apparaîtrons dans une Lightbox.

Plus d'informations sur les options de formatage