Как создать правило перезаписи для URL с параметром GET? - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь переписать URL-адреса этого типа:

http://www.example.com/news/?lang=en

в

http://www.example.com/en-news

Также это должно быть рекурсивнымЭто означает, что:

http://www.example.com/news/world/?lang=en

следует переписать так:

http://www.example.com/en-news/en-world/

Пока что у меня есть это в моем .htaccess (измененос ответом Аркаши ):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# Rewrite language parameter
RewriteCond %{QUERY_STRING} (^|&)lang=(\w+)
RewriteRule /?(\w+)/?$ %1-$1 [END]
</IfModule>

Но, похоже, это не сработает.

1 Ответ

0 голосов
/ 01 февраля 2019

Вам нужно использовать условие перезаписи для захвата токена из строки запроса, затем вы можете использовать его внутри правила перезаписи:

RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)lang=(\w+)
RewriteRule /?(\w+)/?$ %1-$1 [END]

Этот набор правил должен работать аналогичным образом в конфигурации хоста серверов httpили внутри файла динамической конфигурации (файл стиля ".htaccess"), однако, вы должны предварительно сохранить первый вариант.Очевидно, что модуль перезаписи должен быть загружен на http-сервер и включен внутри http-хоста.Если вы решите использовать файл динамической конфигурации, вам также нужно убедиться, что его интерпретация вообще включена и находится в нужном месте.

...