​​Drupal donne un alias à vos chemins de fichiers en utilisant htaccess

Posted by: 
najib0s

Les clients demandent souvent des urls propres dans les noms de fichiers parce qu'ils veulent les publier dans les magazines alors ils veulent les urls aussi propre que possible. H

Voici comment faire cela en utilisant les règles mod_rewrite dans htaccess:

Dans le fichier. Htaccess de votre dossier racine drupal vous ajoutez la ligne suivante.
Par exemple:
Tous les: http://yourdrupal/pdf/whatever.whatever vont être redirigé vers: http://yourdrupal/sites/yourdrupal/files/private/whatever.whatever

  RewriteRule ^pdf/(.*)$ /sites/yourdrupal/files/private/$1 [L,QSA]

Pour plus d'informations sur les règles de réécriture Apache mod_rewrite : http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule and http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

EDIT:
Pour sortir la journalisation, vous devez mettre ceci dans la directive de votre hôte virtuel:

RewriteLog /rewrite.log
RewriteLogLevel 9

Cela vous donnera une idée claire sur la façon dont Apache fait la réécriture.

EDIT2:
Pour ne pas interférer avec la réécriture drupal vous devriez mettre une condition supplémentaire dans la réécriture drupal . (Extrait de .htaccess)

Par exemple

  RewriteCond %{REQUEST_URI} ^/DATASERVICE/WIKI/(.*)$
  RewriteRule ^(.*)$ /sites/default/files/$1 [L]
  #Le[L] dira à Apache d'arrêter l'exécution des autres règles de réécriture
 
  # Réecrire l'URLs du formulaire 'x' dans le formulaire 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

EDIT3:
Plus d'exemples sur:
http://www.workingwith.me.uk/articles/scripting/mod_rewrite

Add new comment

Who are you?


By knowing who you are you will be directed to a page where we have displayed all our drupal services relevant to your professional identity.