apache .htaccess mod-rewrite mod-speling

apache - ¿Cómo puedo hacer que las URL no tengan mayúsculas en el servidor Linux?



.htaccess mod-rewrite (4)

Estoy trabajando en un sitio web que se implementa en un servidor Linux. Tengo pequeños cambios que hacer en eso. He read carpeta. El requisito es que si ingreso el URL localhost:80/tom/Read o ../READ o /read , debe navegar a read.php dentro de una carpeta de read .

Creé un archivo .htaccess bajo un directorio raíz. Colocado después de mencionar el código a continuación en el archivo al ver la página mencionada aquí

RewriteEngine On RewriteBase /tom/ RewriteMap lc int:tolower RewriteCond %{REQUEST_URI} [A-Z] RewriteRule (.*) ${lc:$1} [R=301,L] RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] RewriteRule ![A-Z] - [S=26] RewriteRule ^(.*)(A)(.*)$ $1a$3 [N,R=301] RewriteRule ^(.*)(B)(.*)$ $1b$3 [N,R=301] RewriteRule ^(.*)(C)(.*)$ $1c$3 [N,R=301] RewriteRule ^(.*)(D)(.*)$ $1d$3 [N,R=301] RewriteRule ^(.*)(E)(.*)$ $1e$3 [N,R=301] RewriteRule ^(.*)(F)(.*)$ $1f$3 [N,R=301] RewriteRule ^(.*)(G)(.*)$ $1g$3 [N,R=301] RewriteRule ^(.*)(H)(.*)$ $1h$3 [N,R=301] RewriteRule ^(.*)(I)(.*)$ $1i$3 [N,R=301] RewriteRule ^(.*)(J)(.*)$ $1j$3 [N,R=301] RewriteRule ^(.*)(K)(.*)$ $1k$3 [N,R=301] RewriteRule ^(.*)(L)(.*)$ $1l$3 [N,R=301] RewriteRule ^(.*)(M)(.*)$ $1m$3 [N,R=301] RewriteRule ^(.*)(N)(.*)$ $1n$3 [N,R=301] RewriteRule ^(.*)(O)(.*)$ $1o$3 [N,R=301] RewriteRule ^(.*)(P)(.*)$ $1p$3 [N,R=301] RewriteRule ^(.*)(Q)(.*)$ $1q$3 [N,R=301] RewriteRule ^(.*)(R)(.*)$ $1r$3 [N,R=301] RewriteRule ^(.*)(S)(.*)$ $1s$3 [N,R=301] RewriteRule ^(.*)(T)(.*)$ $1t$3 [N,R=301] RewriteRule ^(.*)(U)(.*)$ $1u$3 [N,R=301] RewriteRule ^(.*)(V)(.*)$ $1v$3 [N,R=301] RewriteRule ^(.*)(W)(.*)$ $1w$3 [N,R=301] RewriteRule ^(.*)(X)(.*)$ $1x$3 [N,R=301] RewriteRule ^(.*)(Y)(.*)$ $1y$3 [N,R=301] RewriteRule ^(.*)(Z)(.*)$ $1z$3 [N,R=301]

Pero no está funcionando.

Soy nuevo en el entorno Linux. No sé sobre mod_speling. ¿Es eso un archivo? ¿Dónde se ubicará en el servidor Linux?


Hola tengo la solución por fin Coloca el siguiente código en /etc/httpd/conf/httpd.conf .

LoadModule speling_module modules/mod_speling.so <IfModule mod_speling.c> CheckSpelling On CheckCaseOnly On </IfModule>

Luego reinicie httpd:

sudo service httpd restart

Y finalmente verificar que esté habilitado:

sudo httpd -M | grep speling

Eso debería producir speling_module (shared)

Gracias por la ayuda para todos ..


Hola, no estoy seguro de si esto ayuda, pero este es el trabajo simple que he usado, usa una página php muy básica pero funciona para el sitio en el que lo necesitaba.

Coloque este código en el archivo htaccess

AddType application/x-httpd-php .html .htm ErrorDocument 404 /404.php

Luego he creado un archivo php con lo siguiente ...

<?php $aurl = $_SERVER[''REQUEST_URI'']; $lurl = strtolower($aurl); if($aurl != $lurl){ header(''location:''.$lurl); } else { header(''location:/404.html''); } ?>

Básicamente obtiene la url de referencia -> almacena como $ aurl

luego lo hace en minúsculas -> almacena como $ lurl

si no lo coinciden, intente mostrar la url en minúsculas ($ lurl)

Si eso falla, la página no existe, la url de referencia ahora es la misma ($ lurl == $ aurl), por lo que luego redirige a una página 404 adecuada o puede mostrar algún código adicional ...


Primero instala speling_module. Luego incluya LoadModule speling_module modules/mod_speling.so en el archivo httpd.conf y luego incluya

<IfModule mod_speling.c> CheckSpelling On CheckCaseOnly On </IfModule> en httpd.conf, luego reinicie el servicio httpd usando el comando service httpd restart .


Puede hacer que el servidor web apache ignore el caso fácilmente utilizando el módulo mod_speling , que forma parte de la distribución estándar de apache:

CheckSpelling On CheckCaseOnly On

Después de reiniciar httpd, puede acceder a read como Read o READ o read .