Redirigir a la página 404 cuando se ingresa una URL incorrecta

Jul 23 2020

Tengo una página de error 404 y probé el siguiente código que se generó a partir de este enlace . Pero cuando se ingresa la URL incorrecta, se redirige a la página principal, no a la página de error 404

<IfModule mod_rewrite.c>
RewriteEngine On
ErrorDocument 404 https://www.rcis.in/404.php
</IfModule>

He agregado el código en el archivo htaccess. Y también cómo eliminar la extensión del archivo de la URL. Abajo está el código que probé

 #Remove extension
 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^([^\.]+)$ $1.php [NC,L]

Y probé el siguiente código que se generó a partir de ese sitio web que se menciona anteriormente

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/?(.*).(php)$ /$1 [R=301,L]

</IfModule>

¿Cómo puedo resolver estos dos?

Gracias de antemano

Respuestas

2 Ajith Jul 23 2020 at 13:53

El siguiente código eliminará la extensión php de la URL

RewriteEngine On
# for 404 redirection
ErrorDocument 404 https://www.yourdomain.in/404
# below code rewrites php extention
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
# Remove php extention
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

De ahí la url https://www.yourdomain.in/404 cargará https://www.yourdomain.in/404.php

fidaay Jul 26 2020 at 06:41

Dejándote aquí mi archivo .htaccess completo:

#turn on url rewriting 
RewriteEngine on

# below code rewrites php extention
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

# Remove php extention
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

#redireccion de errores 
ErrorDocument 403 403.php #your 403 page
ErrorDocument 404 404.php #your 404 page

# Setup browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

# Desactivando el file directory
Options -Indexes

Tenga cuidado con el siguiente código:

# QUE ES ESTO??
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /index.php [L]

Corromperá las redirecciones de URL incorrectas.

Esto también puede ser útil, ya que asegura el uso de https:

# Redireccion total a Https
<IfModule mod_rewrite.c>
RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</IfModule>

Saludos, espero que esto te ayude.