Je travaille un site Web qui est déployé sur un serveur Linux. J'ai de petits changements à faire là-dessus. J'ai le dossier read
. La condition est que si j'entre l'URL localhost:80/tom/Read
ou ../READ
ou /read
il doit naviguer vers read.php
dans un dossier read
.
J'ai créé un fichier .htaccess sous un répertoire racine. Placé le code suivant mentionné ci-dessous dans le fichier en voyant la page mentionné ici
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]
Mais ça ne marche pas.
Je suis nouveau dans l'environnement Linux. Je ne connais pas mod_speling. Est-ce un fichier? Où sera-t-il situé sur le serveur Linux?
Vous pouvez facilement faire en sorte que le serveur Web Apache ignore la casse en utilisant le module mod_speling , qui fait partie de la distribution Apache standard:
CheckSpelling On
CheckCaseOnly On
Après avoir redémarré httpd, vous pouvez accéder à read
en tant que Read
ou READ
ou read
.
Salut, j'ai enfin la solution. Placer le code ci-dessous dans /etc/httpd/conf/httpd.conf
.
LoadModule speling_module modules/mod_speling.so
<IfModule mod_speling.c>
CheckSpelling On
CheckCaseOnly On
</IfModule>
Redémarrez ensuite httpd:
Sudo service httpd restart
Et enfin, vérifiez qu'il est activé:
Sudo httpd -M | grep speling
Cela devrait donner speling_module (shared)
Merci pour l'aide pour tous ..
Salut je ne sais pas si cela aide, mais c'est le workabout simple que j'ai utilisé, il utilise une page php très basique mais cela fonctionne pour le site dont j'avais besoin.
Placez ce code dans le fichier htaccess
AddType application/x-httpd-php .html .htm
ErrorDocument 404 /404.php
J'ai ensuite créé un fichier php avec ce qui suit ..
<?php
$aurl = $_SERVER['REQUEST_URI'];
$lurl = strtolower($aurl);
if($aurl != $lurl){
header('location:'.$lurl);
} else {
header('location:/404.html');
}
?>
Fondamentalement, il obtient l'URL de référence -> stocke comme $ aurl
il le fait alors en minuscules -> stocke sous $ lurl
s'ils ne le correspondent pas, essayez d'afficher l'url en minuscule ($ lurl)
Si cela échoue, la page n'existe pas, l'URL de référence est maintenant la même ($ lurl == $ aurl) donc elle redirige ensuite vers une page 404 appropriée ou peut afficher du code supplémentaire.