Una medida más de seguridad para nuestros sitios Web puede ser la ocultación de las extensiones de los ficheros.De esta manera nadie sabe en que lenguaje está programado el sitio.
EJ: en vez de mostrar la url index.php que muestre index.html o index.dryts
Aquí os dejo el script que acabo de hacer con htaccess
RewriteEngine On
RewriteCond %{REQUEST_URI} .html [NC]
RewriteRule ^(.*)\.html$ $1.php
Estas 3 simples líneas hacen que cualquier petición html sea tratada como un php.
En el servidor no tendremos los archivos como html sino como php que es lo que realmente son.
RewriteEngine On
[Activa la sobre-escritura de la URL]
RewriteCond
[indica que empieza una condición (como un if de toda la vida)]
%{REQUEST_URI}
[obtiene la petición del fichero]
[NC]
[indica que la condición es insensible a mayúsculas y minúsculas]
RewriteRule
[Si se cumple la condición escribe la regla]
^(.*)\.html$ $1.php
[expresión regular que saca el nombre del fichero de la petición y le cambia la extensión]
EJ:
- 1-Se llama a dryts.html
- 2-Se realiza la condición, como es un .html entra en la condición
- 3-Escribe la regla
- La expresión regular ^(.*) obtiene el nombre del fichero (dryts), este nombre se guarda en la variable $1.
- Acto seguido le decimos que procese la petición pero en vez del fichero dryts.html el fichero dryts.php
Un breve repaso de los caracteres de las expresiones regulares en apache (información de la web oficial de apache)
Text:
- . => [Any single character]
- [chars] => [Character class: One of chars]
- [^chars] => [Character class: None of chars]
- text1|text2 => [Alternative: text1 or text2]
Quantifiers:
- ? => [0 or 1 of the preceding text]
- * => [0 or N of the preceding text (N > 0)]
- + => [1 or N of the preceding text (N > 1)]
Grouping:
- (text) => [Grouping of text (either to set the borders of an alternative or for making backreferences where the Nth group can be used on the RHS of a RewriteRule with $N)]
Anchors:
- ^ => [Start of line anchor]
- $ => [End of line anchor]
Escaping:
- \char => [escape that particular char (for instance to specify the chars ".[]()” etc.)]
Con este breve repaso os explico que hace la expresión utilizada en el script
^(.*)\.html$
^ => [empieza por]
(.*) => [agrupa todo tipo de letras, números, símbolos,etc que pueden estar 0 o N veces]
\.html$ => [el $ indica que es el final de la expresión mientras que la \ es para escapar el . de .html]
Más información sobre mod_rewrtie aquí
NOTA: se necesita tener activado el modulo mod_rewrite de apache.
Abrir el httpd.conf (C:\wamp\bin\apache\apache2.2.8\conf\httpd.conf) y quitar la # de delante de #LoadModule rewrite_module modules/mod_rewrite.so