.htaccess Reglas de reescritura para subcarpetas desconocidas

Dec 18 2020

me enfrento al siguiente problema:

Mi estructura de carpetas en el servidor es: public_html / projects /

Vista de árbol: vista de árbol de estructura de carpetas

En la carpeta public_html hay un archivo .htaccess .

Dentro de la carpeta de proyectos, mis socios crearán carpetas numéricas con una página de destino en el interior (digamos que solo un archivo index.php)

Las reglas de reescritura que trato de aplicar son parámetros de URL de idioma y moneda .


Entonces, por ejemplo, esta URL: https://www.example.com/projects/whatever-project-name/index.php?lang=en¤cy=eur

tiene que ser traducido a: https://www.example.com/projects/whatever-project-name/en/eur/

Además, la variable de moneda es opcional. (La variable de idioma es una variable obligatoria)

Entonces, las URL también pueden ser algo como esto: https://www.example.com/projects/whatever-project-name/en/


Estoy buscando y tratando (y llorando) hace un par de días para resolver este problema. La única solución que está cerca de la mía es esta: RewriteRule para directorio desconocido

pero no pude hacerlo funcionar.

Lo que tengo hasta ahora (pero no funciona correctamente) es:

RewriteEngine On
RewriteRule ^(.*/)?/([a-zA-Z0-9]{2,3})/([a-zA-Z0-9-]+)/?$ projects/$1index.php?lang=$2&currency=$3
RewriteRule ^(.*/)?/([a-zA-Z0-9]{2,3})/?$ projects/$1index.php?lang=$2[L]

Respuestas

2 RavinderSingh13 Dec 18 2020 at 01:13

Según las muestras que se muestran, ¿podría intentar seguirlo? Asegúrese de borrar la memoria caché del navegador antes de probar sus URL.

RewriteEngine ON
##With currency variable in URI.
RewriteCond %{REQUEST_URI} ^/projects/([\w-]+)/en/([\w-]+)/?$ [NC] RewriteRule ^(.*)$ projects/%1/index.php?lang=en&currency=%2 [L]

##Without currency variable in URI.
RewriteCond %{REQUEST_URI} ^/projects/([\w-]+)/en/?$ [NC] RewriteRule ^(.*)$ projects/%1/index.php?lang=en [L]