2012-01-05 12 views
5

tengo las siguientes reglas de reescritura:Quitar barra final si no un directorio con Apache

#remove the www. 
RewriteCond %{HTTP_HOST} ^www.website.co.uk$ [NC] 
RewriteRule ^(.*)$ http://local.website.co.uk/$1 [R=301,L] 

#this removes php extention 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

# stops you accessing url with.php 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^.?\ ]+)\.php 
RewriteRule ^([^.]+)\.php(/.+)?$ /$1%{PATH_INFO} [R=301] 

Quiero añadir en una regla que elimina la barra final si alguien trata de acceder al sitio con una.

por ejemplo

website.co.uk/cheese/ debe redirigir a/queso

como se puede ver que tengo una regla que ursl vuelve a dirigir con la extensión .php, no sabe dónde comenzar.

Tengo un directorio en la carpeta raíz que no deseo eliminar la URL final, pero puedo agregar una regla de ignorar para esas.

Saludos

Respuesta

13

Hacer el cambio a continuación a su archivo .htaccess

RewriteEngine on 
RewriteBase/

#existing rule 
#remove the www. 
RewriteCond %{HTTP_HOST} ^www.website.co.uk$ [NC] 
RewriteRule ^(.*)$ http://local.website.co.uk/$1 [R=301,L] 

#new Rule 
#if its not a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
#and it has a trailing slash then redirect to URL without slash 
RewriteRule ^(.+)/$ /$1 [L,R=301] 

# rest of your existing rules go here 
+0

perfecta gracias! – AJFMEDIA

Cuestiones relacionadas