Переписать URL на основе имени элемента - PullRequest
1 голос
/ 22 марта 2012

Я хочу понять, как работает перезапись имени файла.У меня есть файл PHP с именем item.php.Если пользователь выбирает элемент, который он получает, например item-pencil.php, item-book.php и т. Д.

Я нашел в htaccess следующее:

RewriteEngine On
RewriteBase /my/path
RewriteRule ^item-.*-(.*).php show_item.php?id=$1

Может кто-нибудь объяснить, как это работаетв деталях?Файл show_item.php получает параметр id.И это правило действует только для пути /my/path..*, по-видимому, обозначает произвольное число символов, а (.*) означает пробалби несколько раз.Но откуда взято имя pencil или book?

1 Ответ

1 голос
/ 22 марта 2012
RewriteEngine On
RewriteBase /my/path
RewriteRule ^item-.*-(.*).php show_item.php?id=$1

Объяснение: переписать правило проверяет, соответствует ли URL заданному шаблону.pattern говорит, что url (без хоста и rewritebase part) должен начинаться с "item-", за которым следует что-нибудь .*, затем "-", после этого любой символ может быть (.*), затем один символ .,сопровождаемый "php", и он может иметь что-нибудь в конце.

Итак, если вы введете "http://www.yourdomain.com/my/path/item-www-ssss.php.php" в вашем браузере, он считает item-www-ssss.phpphp первым параметром для RewriteRule.он применяет шаблон к нему и соответствует данному шаблону, и данный шаблон будет заменен вторым аргументом show_item.php?id=$1. потому что $1 равен ssss, поэтому ваш конечный результат будет http://www.yourdomain.com/my/path/show_item.php?id=ssss.php.Примечание .php в конце URL.

...