Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Comentariile sunt închise pentru URL corect cu mod_speling

O problema des intalnita in cazul web developerilor amatori e neatentia la numele fisierelor. Multi isi creaza fisierele testand totul pe Windows fara sa aiba in vedere faptul ca sistemele UNIX-Like (Linux, FreeBSD etc) sunt case-sensitive. Adica, daca in Windows fisierul Contact.php e acelasi cu contact.php, in Linux sunt tratate ca fisiere diferite. Problema apare cand in cadrul site-ului linkul e creat catre contact.php dar pe server exista doar fisierul Contact.php ceea ce va rezulta intr-o eroare de tip 404 pentru ca fisierul cautat nu poate fi gasit.

Problema se poate rezolva redenumind fisierul, dar daca e vorba de un site mare sau de o echipa de programatori obisnuiti sa programeze pentru Windows si implicit predispusi sa faca astfel de greseli solutia nu e tocmai buna. Pentru a rezolva problema in serverul web Apache s-a adaugat un modul numit mod_speling care verifica resursa ceruta si reface cererea in functie de fisierele gasite in directorul in care ar trebui sa existe resursa cautata.

Astfel, daca instalam mod_speling ni se permite existenta unei greseli de scriere in URL. Aceasta greseala poate fi o litera mare in locul unei litere mici, o litera lipsa din numele fisierului sau doua litere carora li s-a schimbat ordinea (ex. cotnact.php in loc de contact.php).

Pentru a instala modulul avem nevoie de sursa serverului web Apache, care poate fi descarcata de pe site-ul oficial sau de pe un mirror. Dupa ce downloadam sursa o salvam in directorul de lucru pentru a compila modulul folosind comanda apxs.

[root@server install]# fetch http://apache.mirrors.evolva.ro/httpd/apache_1.3.41.tar.gz
apache_1.3.41.tar.gz                          100% of 2424 kB 7590 kBps
[root@server install]# tar -zxvf apache_1.3.41.tar.gz
x apache_1.3.41/
x apache_1.3.41/ABOUT_APACHE
x apache_1.3.41/cgi-bin/
x apache_1.3.41/cgi-bin/printenv
x apache_1.3.41/cgi-bin/test-cgi
x apache_1.3.41/conf/
x apache_1.3.41/conf/access.conf-dist
x apache_1.3.41/conf/highperformance.conf-dist
x apache_1.3.41/conf/httpd.conf-dist
x apache_1.3.41/conf/httpd.conf-dist-nw
x apache_1.3.41/conf/httpd.conf-dist-win
x apache_1.3.41/conf/magic
x apache_1.3.41/conf/mime.types
x apache_1.3.41/conf/srm.conf-dist
x apache_1.3.41/config.layout
x apache_1.3.41/configure
.........................
[root@server install]# cd apache_1.3.41/src/modules/standard/
[root@server standard]# /usr/local/sbin/apxs -c mod_speling.c
cc -DLOGIN_CAP  -funsigned-char -O2 -fno-strict-aliasing -pipe -DDOCUMENT_LOCATION="/usr/local/www/data"
   -DDEFAULT_PATH="/bin:/usr/bin:/usr/local/bin" -DHARD_SERVER_LIMIT=512 -fpic -DSHARED_MODULE
   -I/usr/local/include/apache  -c mod_speling.c
cc -shared -o mod_speling.so mod_speling.o
[root@server standard]# /usr/local/sbin/apxs -ian speling mod_speling.so
[activating module speling in /usr/local/etc/apache/httpd.conf]
cp mod_speling.so /usr/local/libexec/apache/mod_speling.so
chmod 755 /usr/local/libexec/apache/mod_speling.so
cp /usr/local/etc/apache/httpd.conf.new /usr/local/etc/apache/httpd.conf
rm /usr/local/etc/apache/httpd.conf.new
[root@server standard]#

In mod normal dupa instalare comanda apxs modifica fisierul httpd.conf pentru a adauga suportul pentru modulul instalat. Totusi, e bine sa verificam daca intr-adevar au fost adaugate liniile AddModule si LoadModule iar daca nu exista sa le adaugam manual.

[root@server install]# awk '/(AddModule|LoadModule).+mod_speling/' /usr/local/etc/apache/httpd.conf
LoadModule speling_module     libexec/apache/mod_speling.so
AddModule mod_speling.c
[root@server install]#

Dupa instalare putem activa modulul adaugand in httpd.conf daca dorim o activare globala sau in fisierul .htaccess daca dorim activarea doar pentru o locatie urmatoarele linii:

<ifmodule mod_speling.c>
    CheckSpelling On
</ifmodule>

Dupa ce am terminat instalarea si activarea in zonele dorite putem testa incercand diferite URL-uri gresite. Vom observa ca URL-urile vor fi corectate automat printr-o redirectare rapida catre fisierul corect.

Apache

Comments are closed.