Apache

De Bricosoft.

Trucs et astuces pour Apache (jump on it! jump on it!)

Sommaire

[modifier] Personnaliser le listing de répertoire

[modifier] Module Apache Autoindex / FancyIndex

Installez le module ad hoc :

a2enmod autoindex

Ou décommentez dans le fichier .conf :

LoadModule autoindex_module libexec/apache22/mod_autoindex.so
...
Include etc/apache22/extra/httpd-autoindex.conf

Modifiez le .htaccess à la racine comme dans l'exemple :

HeaderName /header.html
ReadmeName /readme.html
IndexOptions NameWidth=30 DescriptionWidth=57

DefaultIcon http://tremulous.bricosoft.com/images/icons/Human/Items/Helmet.png 
AddIcon http://tremulous.bricosoft.com/images/icons/Human/Structures/Reactor.png tgz 
AddIcon http://tremulous.bricosoft.com/images/icons/Human/Structures/Reactor.png zip
AddIcon http://tremulous.bricosoft.com/images/icons/Human/Structures/Repeater.png ^^DIRECTORY^^
AddIcon http://tremulous.bricosoft.com/images/icons/Alien/Structures/Booster.png ^^BLANKICON^^
AddIcon http://tremulous.bricosoft.com/images/icons/Human/Items/BattleSuit.png cfg
AddIcon http://tremulous.bricosoft.com/images/icons/Alien/Aliens/Tyrant.png txt

AddDescription "customized htaccess for this pretty listing" htaccess.txt
AddDescription "!delire" delire.cfg
AddDescription "rotation des maps" maprotation.cfg
AddDescription "Tremx pk3 used by server" tremx 

header.html et readme.html contiennent les portions de code HTML pour personnaliser l'entête et le pied du listing comme par exemple :

http://maps.bricosoft.com/

[modifier] Dépannage / troubleshooting

Si cet .htaccess ne change pas l'apparence du listing, commentez la ligne :

#    AllowOverride None

Si les fichiers HeaderName et ReadmeName sont ignorés, testez avec un .txt puis commentez ce genre de ligne dans le .conf :

# AddType application/x-httpd-php .php .htm .html

[modifier] Accès restreint

Tout le monde interdit sauf adresses 92.231.*

order deny,allow
deny from all
allow from 92.231

[modifier] Avec mot de passe

Créez le fichier qui contiendra l'identifiant et le mot-de-passe. Ne le placez pas dans l'arborescence web.

htpasswd -c ~/.htmot2passe alibaba

Dans le dossier à protéger :

AuthName "restricted stuff"
AuthType Basic
AuthUserFile "/home/tremulous/.htmot2passe"
require valid-user

Pour rajouter un utilisateur (jeu de login/mdp) :

htpasswd ~/.htmot2passe toto

[modifier] Désactiver PHP pour un répertoire / disable PHP for a folder

dans le .conf :

<Directory "/home/tremulous/www/base">
php_admin_flag engine off
</Directory>

[modifier] Statistiques d'accès

Pour être noyé sous les informations de visites, installez :

[modifier] Ré-écriture d'URL / URL rewriting

La ré-écriture d'URL([1]) peut être utilisée pour rendre une URL plus lisible et/ou indexable dans un moteur de recherche.

RewriteEngine on
RewriteRule nouvelle ancienne

Si la requête n'est pas a lien symbolique, fichier ou dossier rediriger vert le controleur Front :

   RewriteEngine On
   #-s : si le fichier existe et est >0, -f : si le fichier existe
   RewriteCond %{REQUEST_FILENAME} -s [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule ^.*$ - [NC,L]
   RewriteRule ^.*$ index.php [NC,L]

[modifier] SEO : avoid duplicate content / évitez le contenu dupliqué

Si votre config DNS et votre jolie config de virtualhost Apache renvoi www.tfz.me vers tfz.me sans indiquer qu'il s'agit d'une redirection, les moteurs de recherche vont considérer tfz.me/blabla et www.tfz.me/blabla comme du contenu dupliqué (c'est mal). La bonne pratique est de dire à cet idiot-bête de robot indexeur qu'il n'y a qu'un seul site et que l'un redirige vers l'autre : soit tfz.me redirige vers www.tfz.me, soit l'inverse et reciproquement (merde c'est pourtant clair !).

Le spider (je vous ai eu c'est un autre nom du robot indexeur car comme dieu il a une infinité de noms) comme tout les client http ne comprends que les nombres :

301 - indique que la ressource est déplacé pour l'éternité.
302 - pareil mais temporaire

Apache a des modules pour faire ça : alias et rewrite. Rewrite est plus classe car la syntaxe est inbitable même après 10 ans de pratique et vous fera passer pour 1337. Utilisez alias si vous êtes un noob ou si votre ego est sain et équilibré.

Donc avec rewrite, vérifiez qu'il soit chargé :

$ a2enmod rewrite
Module rewrite already enabled
$ cat /etc/apache2/sites-enabled/www.tfz.me | grep AllowOverride
  AllowOverride All

Avec All c'est OK on peut utiliser les .htaccess, si c'est None changez ça en All à moins que vous ne souhaitiez mettre vos règles de réécritures dans la définition de votre virtualHost(démerdez-vous j'ai pas envie).

On peut bidouiller le .htaccess à la racine du site :

tfz.me/www$ vim .htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.tfz\.me
RewriteRule (.*) http://www.tfz.me/$1 [R=301,L]

Vérifiez ensuite avec cet outil en ligne : http://www.ragepank.com/redirect-check/ ou avec un addon firefox pour les en-têtes http dont j'ai oublié le nom.

C'est pas tout il reste à faire la même chose pour l'index.php :

tfz.me/www$ vim .htaccess
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ http://www.tfz.me/$1 [R=301,L]

plop.

[modifier] Vérifiez la syntaxe des .conf

# apache2ctl -t
Syntax OK

Récupérée de « http://www.bricosoft.com/Apache »
Plus