Два разных условия перезаписи в одном и том же.htaccess?

Мне нужно создать условие перезаписи для двух конкретных файлов в соответствии с запрошенным путем в URL-адресе. Возможно?

Условие 1:Если URL-адрес example.com/admin, перейдите к admin.php?uri=params. То есть:

  • example.com/admin/form=>admin.php?uri=form

  • example.com/admin/form/edit=>admin.php?uri=form/edit

и т.д...

Условие 2:Если URL-адрес принимает ЛЮБОЙ ДРУГОЙ параметр (, кроме /admin), перейдите к index.php?uri=params. Таким образом,:

  • example.com/about=>index.php?uri=about

  • example.com/test=>index.php?uri=test

  • example.com/blau/bleu=>index.php?uri=blau/bleu

и т.д...

1
задан 11 November 2021 в 02:37
1 ответ

Попробуйте что-нибудь подобное:

DirectoryIndex index.php

Options -MultiViews

RewriteEngine On

RewriteRule ^admin(?:$|/([^.]*))$ admin.php?uri=$1 [QSA,L]

RewriteRule ^([^.]+)$ index.php?uri=$1 [QSA,L]

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

MultiViewsнеобходимо отключить (, если это еще не сделано ), так как вы запрашиваете URL /admin, который является базовым именем файла, в который вы перезаписываете. Если MultiViews был включен, то /admin.phpбудет вызываться без параметра URL.

ФлагQSA(Query String Append)требуется только в том случае, если вы ожидаете строку запроса в исходном запросе, которую необходимо добавить к переписанному URL-адресу.

Запрос корня документа (домашней страницы)вызоветindex.phpбез параметра uri.


В сторону:Просто примечание по терминологии...

Если URL-адрес принимает ЛЮБОЙ ДРУГОЙ параметр, (отличный от/admin)

То, что вы называете "параметром" здесь, на самом деле является URL-адресом-путь (или сегментов пути-). URL Параметры — это пары имя=значение в строке запроса (, куда вы хотите переписать запрос).

В вашем примере вы переписываете URL-путь в значение параметра URL.

0
ответ дан 11 November 2021 в 08:39

Теги

Похожие вопросы