htaccess (sin redirección) [REWRITEURL] (carpeta a index.php)
Pregunta
Solo quiero obtener una redirección rápida de htaccess. es decir:
domain.com/subfolderGreen - > domain.com/index.php?folder=subfolderGreen
(tenga en cuenta que la subcarpeta verde realmente existe)
Lo he intentado pero no pude llegar a la expresión regular necesaria.
gracias. a.
AÑADIDO:
Lo siento, quiero que esto funcione para cualquier subcarpeta, no solo " subfolderGreen " Estoy usando
RewriteRule ^ / ([^ /] +) /? $ /index.php?folder=$1 [L]
pero no está funcionando. ¿Alguna pista?
Solución
Creo que su ejemplo causaría un bucle sin fin ya que /index.php coincide con lo que está haciendo. Prueba esto:
RewriteRule ^([A-Za-z0-9]+)/?$ /index.php?folder=$1 [L]
Si desea que funcione para todos los directorios que existen, esto probablemente también funcionará.
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+)/?$ /index.php?folder=$1 [L]
Otros consejos
RewriteRule ([^/]+)$ index.php?folder=$1
Creo que eso hará el truco.
RewriteRule tiene algunos problemas confusos cuando se usa en .htaccess que requiere la adición de una RewriteBase.
¿Qué errores / problemas estás viendo? Si quiere estar seguro de cómo redireccionar, agregar una [R] a menudo puede ayudar con la depuración.
Finalmente ... ¿existe realmente la subcarpeta verde o no? Si existe, eso podría causar algunos problemas.
Creo que es:
RedirectMatch 301 domain.com/(.*) domain.com/index.php?folder=$1
RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /(([^/\ ]+/)*)/+([^\ ]*)
RewriteRule ^ /%1%3 [L,R=301]
RewriteRule ^([^/]+)/?$ index.php?folder=$1 [L]
La línea # 2 manejará el caso si alguien va a website.com/mypage///// por lo que, de forma predeterminada, se convierte en website.com/mypage/ (creo)