#apache #.htaccess #mod-rewrite
#apache #.htaccess #mod-перезапись
Вопрос:
У меня есть URL, который я хочу сократить с помощью mod_rewrite.
В своей самой уродливой форме это выглядит как:
/im&.php?i=15amp;a=92
В идеале это должно выглядеть как:
/im&/15/92
Проблема в том, что иногда это может быть просто:
/im&.php?i=15
В этом случае пользователь введет:
/im&/15
Итак, я думаю, мне нужен mod_rewrite, подобный этому:
RewriteRule ^/im&/(.*)/(.*)$ /im&.php?i=$1amp;a=$2
Который, я полагаю, будет работать только тогда, когда в URL присутствуют обе переменные, а не только сокращенная версия.
Как мне сделать одну перезапись, которая работает для обоих, или как мне сделать 2, не отменяя другую?
Ответ №1:
Попробуйте это правило:
RewriteRule ^im&/([0-9] )(/([0-9] ))?$ im&.php?i=$1amp;a=$3
При использовании mod_rewrite в файле .htaccess необходимо удалить из шаблона префикс пути для каждого каталога (в данном случае ведущий /
). Потому что mod_rewrite тоже это делает и возвращает его после процесса перезаписи.
Комментарии:
1. Я понятия не имею, как вы переходите с 1 доллара на 3 доллара без 2 долларов — но это работает. легенда Gumbo
2. @cosmicbdo&: Вторая группа является необязательной,
(…)?
которая содержит третью группу.