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

я сталкиваюсь со следующей проблемой:

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

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

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

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

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


Так, например этот URL: https://www.example.com/projects/whatever-project-name/index.php?lang=en&currency=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]
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
197
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Спасибо за ваш быстрый ответ! Я только что попробовал ваше решение, но получаю страницу с внутренней ошибкой сервера.

Greg Vlachokostas 17.12.2020 19:18

@GregVlachokostas, извините, была опечатка ) отсутствовало в 1-м правиле, не могли бы вы попробовать отредактированные один раз и дайте мне знать, как дела?

RavinderSingh13 17.12.2020 19:20

Другие вопросы по теме