Улучшение этого URL с помощью .htaccess и mod_rewrite

#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&: Вторая группа является необязательной, (…)? которая содержит третью группу.