Мод переписать, чтобы получить идентификатор из URL-адреса

У меня есть следующая реальная структура URL-адресов

/folder/folder2/file1.php
/folder/folder3/file2.php

, где file1 и file2 может быть любым файлом PHP.

У меня также есть

/folder/folder2/folder4/file1.php
/folder/folder3/folder4/file2.php

То, что я хочу, - это изменить URL-адреса, чтобы они содержали идентификатор, подобный этому:

/folder/12345/folder2/file1.php

Я пытаюсь создать правило mod_rewrite, которое получает идентификатор и запускает все, что URL-адрес быть без идентификатора

, поэтому

/folder/12345/folder2/file1.php

будет запускать

/folder/folder2/file1.php?id=12345

Как будет выглядеть правило mod_rewrite для этого?

Кроме того, что происходит, когда я отправляю формы как POST или GET? Может ли мод rewrite работать как с постом, так и с get?

1
задан 18 February 2020 в 19:42
1 ответ

Я предполагаю, из вашего вопроса, что вы хотите переписать только URL-адреса формы:

  • / folder / /folder2/[12187estive/folder //folder3/[12188 providedwhere папка , папка2 и папка3 являются известными подкаталогами. Но файл .php может быть любым.

    (Это исключает /folder/folder2/folder4/file1.php и / folder / folder3 / folder4 / file2. php и т. д.)

    также предполагается, что это только цифры (как в вашем примере). Если есть другие ограничения, например, всегда иметь длину 5 цифр, то это также должно быть включено.

    Вы можете сделать что-то вроде следующего, используя mod_rewrite:

    RewriteEngine On
    
    RewriteRule ^/?(folder)/(\d+)/(folder2|folder3)/([^./]+\.php)$ /$1/$3/$4?id=$2 [QSA,L]
    

    $ n - это обратные ссылки на заключенные в скобки подшаблоны в шаблон RewriteRule .

    Флаг QSA добавит строку запроса из запроса (если есть) - требуется, если вы отправляете форму через GET в один из эти URL-адреса.

    Кроме того, что происходит, когда я отправляю формы как POST или GET? Может ли мод rewrite работать как с постом, так и с получением?

    Запросы GET и POST будут перезаписаны.

1
ответ дан 25 February 2020 в 23:33

Теги

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