.htaccess Reguły przepisywania dla nieznanych podfolderów

Dec 18 2020

mam następujący problem:

Moja struktura folderów na serwerze to: public_html / projects /

Widok drzewa: widok drzewa struktury folderów

W folderze public_html znajduje się plik .htaccess .

W folderze projektów moi partnerzy utworzą foldery numerus ze stroną docelową w środku (powiedzmy tylko plik index.php)

Reguły przepisywania, które próbuję zastosować, to parametry języka i adresu URL waluty .


Na przykład ten adres URL: https://www.example.com/projects/whatever-project-name/index.php?lang=en¤cy=eur

należy przetłumaczyć na: https://www.example.com/projects/whatever-project-name/en/eur/

Ponadto zmienna walutowa jest opcjonalna. (Zmienna językowa jest zmienną obowiązkową)

Więc adresy URL mogą też wyglądać mniej więcej tak: https://www.example.com/projects/whatever-project-name/en/


Szukam i próbuję (i płaczę) już kilka dni, aby rozwiązać ten problem. Jedyne rozwiązanie, które jest bliskie mojemu, to: RewriteRule dla nieznanego katalogu

ale nie udało mi się to zrobić.

To, co mam do tej pory (ale to nie działa poprawnie) to:

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]

Odpowiedzi

2 RavinderSingh13 Dec 18 2020 at 01:13

Na podstawie pokazanych próbek możesz spróbować wykonać następujące czynności. Przed przetestowaniem adresów URL wyczyść pamięć podręczną przeglądarki.

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]