remove quitar ocultar htaccess extensiones extension direcciones como cambiar barra archivo amigables php apache .htaccess mod-rewrite

php - quitar - Htaccess: agregar/eliminar barra diagonal desde la URL



remove php url htaccess (4)

Mi sitio web ejecuta un script llamado -> guión de fondo de pantalla de WSS

Mi problema -> He intentado eliminar o agregar una barra al final de mi URL para evitar contenido duplicado y también para limpiar mis URL.

Lo intenté de todo y probé todo lo que pude pensar y cargas de los interwebs, ¡pero aún no tuve tanta suerte! Puede ser una solución rápida, pero lo he visto tanto que probablemente estoy ciego a algo absolutamente obvio.

Así que te presento con todo mi código .htaccess :

DirectoryIndex index.php RewriteEngine on RewriteRule ^download/([0-9]+)?/([0-9]+)x([0-9]+)/([^//.]+) image.php?id=$1&width=$2&height=$3&cropratio=$4&download=1 [L] RewriteRule ^file/([0-9]+)?/([0-9]+)x([0-9]+)/([^//.]+) image.php?id=$1&width=$2&height=$3&cropratio=$4 [L] RewriteRule ^preview/([0-9]+)?/([0-9]+)x([0-9]+)/([^//.]+) wallpaper_preview.php?id=$1&width=$2&height=$3&name=$4 [L] RewriteRule ^thumbnail/([0-9]+)?/([0-9]+)x([0-9]+)/([^//.]+)/([^//.]+)/([^//.]+)/([^/]+) image.php?wallpaper_id=$1&width=$2&height=$3&cropratio=$4&align=$5&valign=$6&file=$7 [L] RewriteRule ^cat/([0-9]+)?/([^//.]+)/p([0-9]+) index.php?task=category&id=$1&name=$2&page=$3 [L] RewriteRule ^cat/([0-9]+)?/([^//.]+)/([0-9a-zA-Z?-]+)/p([0-9]+) index.php?task=category&id=$1&name=$2&sortby=$3&page=$4 [L] RewriteRule ^cat/([0-9]+)?/([^//.]+)/([0-9a-zA-Z?-]+)-([0-9]+) index.php?task=category&id=$1&sortby=$3&page=$4 [L] RewriteRule ^cat/([0-9]+)?/([^//.]+) index.php?task=category&id=$1&name=$2 [L] RewriteRule ^tag/([^//.]+)/([0-9a-zA-Z?-]+)/([0-9]+) index.php?task=tag&t=$1&sortby=$2&page=$3 [L] RewriteRule ^tag/([^//.]+) index.php?task=tag&t=$1 [L] RewriteRule ^profile/([0-9]+)?/([^//.]+) index.php?task=profile&id=$1&name=$2 [L] RewriteRule ^profile/comments/([0-9]+)?/([^//.]+) index.php?task=users_comments&id=$1&name=$2 [L] RewriteRule ^page/([0-9]+) index.php?task=view_page&id=$1 [L] RewriteRule ^register index.php?task=register [L] RewriteRule ^lost-password index.php?task=lost_pass [L] RewriteRule ^links index.php?task=links [L] RewriteRule ^news/item/([0-9]+)/([^//.]+) index.php?task=news&id=$1 [L] RewriteRule ^news/page([0-9]+) index.php?task=news&page=$1 [L] RewriteRule ^members/([^//.]+)-([^//.]+)/page([0-9]+)? index.php?task=member_list&sort=$1&order=$2&page=$3 [L] RewriteRule ^members index.php?task=member_list [L] RewriteRule ^messages index.php?task=messages [L] RewriteRule ^submit index.php?task=submit [L] RewriteRule ^search/([^//.]+) index.php?task=search&q=$1 [L] RewriteRule ^search index.php?task=search [L] RewriteRule ^submit index.php?task=submit [L] RewriteRule ^r-([0-9]+)?-([0-9]+)? go.php?id=$1&ref=$2 [L] RewriteRule ^r-([0-9]+)? go.php?id=$1 [L] RewriteRule ^([^//.]+)/([0-9]+)/([^//.]+) index.php?task=view&id=$2&name=$3 [L] RewriteRule ^news/([^//.]+) index.php?task=news&name=$1 [L] RewriteRule ^profile/([^//.]+) index.php?task=profile&name=$1 [L] RewriteRule ^news index.php?task=news [L] RewriteRule ^page/([^//.]+) index.php?task=view_page&name=$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^//.]+)/([0-9a-zA-Z''?-]+)/([0-9]+) index.php?task=category&name=$1&sortby=$2&page=$3 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^//.]+)/([^//.]+) index.php?task=view&name=$2 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^//.]+) index.php?task=category&name=$1 [L] ## www reslove ## RewriteCond %{HTTP_HOST} !^www/. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] ## www reslove ## ## index reslove ## Options +FollowSymLinks RewriteCond %{THE_REQUEST} ^.*/index/.php RewriteRule ^(.*)index.php$ http://www.epicwallpaper.net/$1 [R=301,L] ## index reslove ##


Esto es lo que he usado para mi última aplicación.

# redirect the main page to landing ##RedirectMatch 302 ^/$ /landing # remove php ext from url # https://.com/questions/4026021/remove-php-extension-with-htaccess RewriteEngine on # File exists but has a trailing slash # https://.com/questions/21417263/htaccess-add-remove-trailing-slash-from-url RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/?(.*)/+$ /$1 [R=302,L,QSA] # ok. It will still find the file but relative assets won''t load # e.g. page: /landing/ -> assets/js/main.js/main # that''s we have the rules above. RewriteCond %{REQUEST_FILENAME} !/.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}/.php -f RewriteRule ^/?(.*?)/?$ $1.php


Justo debajo de RewriteEngine On line, agregue:

RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R] # <- for test, for prod use [L,R=301]

para hacer cumplir una política de barra inclinada sin seguimiento.

Para aplicar una política de barra inclinada:

RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*[^/])$ /$1/ [L,R] # <- for test, for prod use [L,R=301]

EDITAR : comentó las R=301 partes porque, como se explica en un comentario:

¡Ten cuidado con eso R=301 ! Tenerlo allí hace que muchos navegadores guarden en caché el archivo .htaccess indefinidamente : de alguna manera se vuelve irreversible si no puede borrar el caché del navegador en todas las máquinas que lo abrieron. Al probar, mejor ve con R simple o R=302

Después de completar sus pruebas, puede usar R=301 .


Para complementar la respuesta de Jon Lin, aquí hay una técnica de slash sin seguimiento que también funciona si el sitio web está ubicado en un directorio (como example.org/blog/):

RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [R=301,L]


En aras de la exhaustividad, aquí hay una alternativa que enfatiza que REQUEST_URI comienza con una barra (al menos en los archivos .htaccess ):

RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} /(.*)/$ RewriteRule ^ /%1 [R=301,L] <-- added slash here too, don''t forget it

Simplemente no use %{REQUEST_URI} (.*)/$ . Porque en el directorio raíz REQUEST_URI es igual a / , la barra diagonal REQUEST_URI , y sería malinterpretada como una barra inclinada.


Si estás interesado en leer más:

(actualización: esta técnica ahora se implemented en Laravel 5.5)


Options +FollowSymLinks RewriteEngine On RewriteBase / ## hide .html extension # To externally redirect /dir/foo.html to /dir/foo RewriteCond %{THE_REQUEST} ^[A-Z]{3,}/s([^.]+).html RewriteRule ^ %1 [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,}/s([^.]+)//s RewriteRule ^ %1 [R=301,L] ## To internally redirect /dir/foo to /dir/foo.html RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^([^/.]+)$ $1.html [L] <Files ~"^.*/.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </Files>

Esto elimina el código html o php si lo complementa. Le permite agregar una barra inclinada y aparecer tan bien como la url sin la barra al final, omitiendo el código 404. Además de un poco de seguridad adicional.