es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La Regla de Reescritura para archivos PHP falla.

Quiero reescribir estas reglas de .htaccess en una plantilla para poder utilizarla también en mis otras páginas:

RewriteRule ^admin/add-news/?$ admin/add_news.php [L]
RewriteRule ^admin/edit-news/([0-9a-z-@._]+)/([0-9]+)/?$ admin/edit_news.php?name=$1&id=$2 [L]

Por ejemplo:

RewriteRule ^admin/([a-z-])/?$ admin/$1.php [L]
RewriteRule ^admin/([a-z-])/([0-9a-z-@._]+)/([0-9]+)/?$ admin/$1.php?name=$2&id=$3 [L]

Probé las últimas reglas en WAMP y no funcionan. Retorna un error 404 No encontrado.

La URL solicitada no fue encontrada en este servidor.

El archivo .htaccess completo es:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php
RewriteRule ^admin/add-news/?$ admin/add_news.php [L]
RewriteRule ^admin/edit-news/([0-9a-z-@._]+)/([0-9]+)/?$ admin/edit_news.php?name=$1&id=$2 [L]

Las ubicaciones de los archivos son:

1. C:\wamp64\www\test.com
2. C:\wamp64\www\test.com\admin\add_news.php
C:\wamp64\www\test.com\admin\edit_news.php
3. Quiero redirigir de URLs con guiones bajos a guiones, por ejemplo:
de admin/add_news.php a admin/add-news
También de admin/edit_news.php?name=%1&id=%2 a admin/edit-news/name/id
Ejemplo: admin/edit-news/mi-titulo-de-noticias/2

¿Alguna idea de cómo solucionarlo? Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para reescribir las reglas .htaccess en una plantilla que funcione para otras páginas, use el siguiente código:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^(.*)$ $1.php
    
    RewriteRule ^admin/([a-z-]+)/?$ admin/$1.php [L]
    RewriteRule ^admin/([a-z-]+)/([0-9a-z-@._]+)/([0-9]+)/?$ admin/$1.php?name=$2&id=$3 [L]
    

    Para solucionar el error 404, asegúrese de que el archivo .htaccess esté ubicado en el directorio raíz de su sitio web (es decir, C:\wamp64\www\test.com) y que el módulo de reescritura esté habilitado en la configuración del servidor WAMP.

    Para redirigir las URL con guiones bajos a guiones, use el siguiente código:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    
    RewriteRule ^admin/([a-z-]+)/?$ admin/$1.php [L]
    RewriteRule ^admin/([a-z-]+)/([0-9a-z-@._]+)/([0-9]+)/?$ admin/$1.php?name=$2&id=$3 [L]
    
    RewriteRule ^admin/([a-z]+)_([a-z]+)/?$ admin/$1-$2 [L,NC,R=301]
    RewriteRule ^admin/([a-z]+)_([a-z]+)/([0-9]+)/?$ admin/$1-$2/$3 [L,NC,R=301]
    

    Este código redirigirá las URL con guiones bajos a guiones, y también incluirá el código de estado de redirección (301) para indicar que los cambios son permanentes.

Comments are closed.