Necesita ayuda con una reescritura de URL .htaccess

Necesita ayuda con una reescritura de URL .htaccess

Estoy intentando hacer otro sistema SEO con PHP/.htaccess...

Necesito que se apliquen las siguientes reglas:

  1. Debe capturar todas las URL que no terminan con una extensión (www.foo.com --> catch | www.foo.com/catch-me --> catch | www.foo.com/dont-catch.me --> no atrapar).
  2. Debe capturar todas las URL que terminan en .php* (.php, .php4...) (que son las excepciones a la regla n.° 1).
  3. Todas las reglas sólo deben aplicarse en algunos directorios ynoen sus subdirectorios (/ y /framework hasta ahora).
  4. El htaccess debe enviar la URL escrita en un valor GET para poder trabajar con ella en PHP.

¿Algún asistente de reescritura de mods puede ayudarme?

Editar:

Bien, después de leer las publicaciones sugeridas, se me ocurrió esto, pero creo que está estancado en un bucle... ¿Alguien puede ayudar?

<IfModule mod_rewrite.c>
RewriteEngine On
# 1
RewriteCond %{REQUEST_FILENAME} !\.[^/]+$ [OR]
# 2
RewriteCond %{REQUEST_FILENAME} \.php.*$
# 4
RewriteRule ^(.*)$ http://localhost/seo-urls/seo-urls-mapper.php%3Frequested=$1?%{QUERY_STRING}
</IfModule>

Como quiero completar esto durante mis vacaciones de Navidad, agregaré una recompensa :) ¡Gracias por tu ayuda y felices fiestas!

Respuesta1

Pruebe esto como punto de partida:

RewriteEngine On

RewriteCond %{QUERY_STRING} !^uri
RewriteCond %{REQUEST_URI}  !\.(.*)
RewriteCond %{REQUEST_URI}  !^/(framework|restricted)/
RewriteRule .* /index.php?uri=%{REQUEST_URI} [L,QSA]

RewriteCond %{QUERY_STRING} !^uri
RewriteCond %{REQUEST_URI}  \.php.?$
RewriteRule .* /index.php?uri=%{REQUEST_URI} [L,QSA]

Primer conjunto de reglas:

  1. No ejecute esta regla si el uriparámetro GET está configurado (de lo contrario, obtendrá un bucle al redirigir al script de destino después de agregar el uriparámetro).
  2. Si el URI contiene un .entonces omita este conjunto de reglas (es posible que desee crear una regla más específica para extensiones particulares, pero esto funciona)
  3. Si el URI está en un directorio restringido, omita este conjunto de reglas
  4. Redirigir a index.php(es posible que deba cambiar el destino) y configurar el uriparámetro GET

Segundo conjunto de reglas:

  1. Si el uriparámetro está configurado, omita este conjunto de reglas para evitar un bucle
  2. Continúe si el URI solicitado termina en .php, .php4o similar ( .php123lo haríanoser redirigido)
  3. Redirigir a index.php(es posible que deba cambiar el destino) y configurar el uriparámetro GET

No hace falta un "asistente" para crear reglas mod_rewrite; dedique algún tiempo a experimentar por su cuenta y leer la guía que recomendó jscott.

HacerHaga todas sus preguntas de tipo teórico aquí si desea excelentes explicaciones (a diferencia de las preguntas de tipo práctico en las que parece que quienes responden están colaborando con su proyecto en lugar de ampliar su conocimiento).

información relacionada