У меня есть следующий URL:
http://example.com/gallery/thumb.php?h=400&w=300&a=c&src=Img_0.jpg
Что я пытаюсь использовать mod_rewrite
сделать "красивым".
Желаемый URL:
http://example.com/h/400/w/300/a/c/src/Img_0.jpg
И мой mod_rewrite
является:
RewriteRule ^h/(*)/w/(*)/a/(*)/src/(*)$ /gallery/thumb.php?h=$1&w=$2&a=$3&src=$4 [L]
Но я получаю 500 Internal Server Error
ошибка, которая говорит мне, что я написал это правило неправильно.
Что я не так написал?
РЕДАКТИРОВАТЬ: Не дубликат. Мой вопрос касается конкретного кода, который я пытался написать сам, но не смог написать рабочий код.
Это недопустимо в вашем регулярном выражении: (*)
.
*
обозначает репетиция предыдущего символа. Поскольку в группе нет персонажей, повторять нечего.
Если вы измените (*)
к (.*)
выражение становится действительным. .
обозначает «каждый символ», так что вы можете ограничить это немного дальше.
Выражение для вашего примера может быть:
RewriteRule ^h/(\d+)/w/(\d+)/a/([a-z]+)/src/(.+)$ /gallery/thumb.php?h=$1&w=$2&a=$3&src=$4 [L]
куда \d
обозначает цифру и [a-z]
любой символ в этом диапазоне. Я также изменил *
к +
, который соответствует "1 или более символов" вместо "0 или более", которые были бы *
.