У меня следующая реальная структура 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 работать как с постом, так и с получением?
Я предполагаю, из вашего вопроса, что вы хотите только переписать URL-адреса формы:
/folder/<id>/folder2/<anyfile.php>
/folder/<id>/folder3/<anyfile.php>
где folder
, folder2
и folder3
известны подкаталоги. Но .php
файл может быть чем угодно.
(Это исключает /folder/folder2/folder4/file1.php
и /folder/folder3/folder4/file2.php
и т.д.)
В <id>
также предполагается, что это только цифры (как в вашем примере). Если есть другие ограничения, например, всегда длина 5 цифр, то это также следует включить.
Используя mod_rewrite, вы бы сделали что-то вроде следующего:
RewriteEngine On
RewriteRule ^/?(folder)/(\d+)/(folder2|folder3)/([^./]+\.php)$ /$1/$3/$4?id=$2 [QSA,L]
$n
являются обратными ссылками на заключенные в скобки подшаблоны в RewriteRule
шаблон.
В QSA
flag добавит строку запроса из запроса (если есть) - требуется, если вы отправляете форму через GET на один из этих URL-адресов.
Кроме того, что происходит, когда я отправляю формы как POST или GET? Может ли мод rewrite работать как с постом, так и с получением?
Запросы GET и POST будут переписаны.