Apache

De bricosoft
Aller à la navigation Aller à la recherche

<google uid="C01" position="left"></google>

Fichier:ASF-logo.svg
Fichier:Tommy-seebach.jpg
Apache! Jump on it! Jump on it!

Trucs et astuces pour Apache sans y perdre ses plumes (<--- hahaha).

Personnaliser le listing de répertoire

<google uid="C08" position="left"></google>
Erreur dans le widget Twitter Search: unable to write file /home/gbp4dt5/zones/bricosoft.com/www/extensions/Widgets/compiled_templates/wrt69385da49b6c01_94245830

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/

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

Accès restreint

Tout le monde interdit sauf adresses 92.231.*

order deny,allow
deny from all
allow from 92.231

Avec mot de passe

Fichier:Apache-jumponit.gif

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

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

<google uid="C08" position="left"></google>

dans le .conf :

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

Statistiques d'accès

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

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

Installer

# a2enmod rewrite

Tester

$ vim .htaccess
RewriteEngine on
RewriteRule ^gnafreu\.html$ /index.html [L]

Broutez ensuite http://site-pour.ri/gnafreu.html et ça affichera votre index. Par contre http://site-pour.ri/plop.html sera 404.

Si gnafreu.html est aussi 404 vérifiez d'avoir bien activé le parsing des .htaccess dans la config apache du site. Il ne doit pas y avoir de "AllowOverride None" dans <Directory /> de votre /etc/apache2/sites-available/www.site-pour.ri.

Exemple : pattern Front Controller

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 >
   #-l : si le fichier est un lien symbolique
   #-d : si c'est un dossier
   #flags : NC (nocase), L (last rule) [2]
   RewriteCond %{REQUEST_FILENAME} -s [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule ^.*$ - [NC,L]
   RewriteRule ^.*$ index.php [NC,L]

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.

Vérifiez la syntaxe des .conf

# apache2ctl -t
Syntax OK

cacher la version d'apache

Dans /etc/apache2/conf.d, il faut modifier les directives ServerTokens et ServerSignature :

  • ServerTokens

Cette directive configure le retour d'une réponse HTTP. Par défaut c'est 'Full' qui envoi des infos sur l'OS et les modules compilés. La liste du plus verbeux au moins est : Full | OS | Minimal | Minor | Major | Prod

#ServerTokens Minimal
#ServerTokens OS
#ServerTokens Full
ServerTokens Prod
  • ServerSignature

Cette directive rajoute une ligne à la fin des pages générées par le serveur (erreurs, etc). La liste est : On | Off | EMail (liens vers le ServerAdmin définit dans votre <VirtualHost>)

#ServerSignature Off
#ServerSignature On
ServerSignature EMail

modules

je module, je module et je fais des bulles

pagespeed

pagespeed par gougle : http://code.google.com/intl/fr-FR/speed/page-speed/download.html

$ wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_i386.deb
# dpkg -i mod-pagespeed-beta_current_i386.deb 
# apt-get -f install
# /etc/init.d/apache2 restart

userdir

Ce module permet d'avoir une url dans son home :

http://localhost/~toto/

Dans votre home créez un dossier public_html :

$ cd
$ mkdir public_html

userdir est souvent installé par défaut mais pas actif

# a2enmod userdir

Puis relancez le serveur httpd :

# service apache restart

erreurs courantes (ou pas)

Invalid command 'RewriteEngine'

$ sudo a2enmod rewrite

... the first has precedence, perhaps you need a NameVirtualHost directive

logs

$ tail -f access.log |cut -d" " -f11-100|grep -vE "(bingbot|Googlebot|Ezooms|Baiduspider)"

{{#evp:dailymotion|x3jxu_fresh-prince-contest_fun|Apache, jump on it! jump on it!}}