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