.htaccess Правила перезаписи для неизвестных подпапок

Dec 18 2020

я столкнулся со следующей проблемой:

Моя структура папок на сервере: public_html / projects /

Представление в виде дерева: представление структуры папок в виде дерева

В папке public_html есть файл .htaccess .

Внутри папки проектов мои партнеры будут создавать многочисленные папки с целевой страницей внутри (скажем, просто файл index.php).

Правила перезаписи, которые я пытаюсь применить, - это параметры URL-адреса языка и валюты .


Так, например, этот URL: https://www.example.com/projects/whatever-project-name/index.php?lang=en¤cy=eur

должен быть переведен на: https://www.example.com/projects/whatever-project-name/en/eur/

Кроме того, переменная валюты не является обязательной. (Языковая переменная - обязательная переменная)

Таким образом, URL-адреса тоже могут быть примерно такими: https://www.example.com/projects/whatever-project-name/en/


Я ищу и пытаюсь (и плачу) вот уже пару дней, чтобы решить эту проблему. Единственное решение, которое близко к моему: RewriteRule для неизвестного каталога.

но мне не удалось заставить его работать.

Что у меня есть до сих пор (но он не работает должным образом):

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]

Ответы

2 RavinderSingh13 Dec 18 2020 at 01:13

Основываясь на показанных вами образцах, не могли бы вы попробовать следующее. Перед тестированием 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]