Перезапись URL / отладка регулярных выражений - PullRequest
3 голосов
/ 15 апреля 2009

Мне нужно несколько свежих глаз на это. Мне трудно определить проблему.

В папке X у меня есть файл .htaccess со следующими двумя строками:

RewriteEngine on
RewriteRule ^([A-Za-z0-9\.-]+)/?$ item-display.php?bibid=$1 [NC,L]

Моя интерпретация заключается в том, что все, что находится в этом каталоге, будет затем перенаправлено на страницу отображения предметов. Проблема заключается в том, что на странице отображения элемента отображается значение двунаправленных выводов «display-item». Так или иначе я перенаправляю из: http://localhost/test/cat/item/14056a до: http://localhost/test/cat/item/item-display.php?bibid=item-display

Есть идеи?

Приветствия

Ответы [ 3 ]

5 голосов
/ 15 апреля 2009

Вы должны исключить файл, на который вы перенаправляете, так как он также соответствует шаблону:

RewriteCond %{REQUEST_URI} !/item-display\.php$
RewriteRule ^([A-Za-z0-9\.-]+)/?$ item-display.php?bibid=$1 [L]
1 голос
/ 15 апреля 2009

Запрос подвергается дополнительной обработке, поэтому он извлекает часть имени файла переписанного URL, которую я предполагаю. Попробуйте добавить флаг NS.

1 голос
/ 15 апреля 2009

Попробуйте это

RewriteEngine on
RewritePath /test/cat/item
RewriteRule ^([A-Za-z0-9\.-]+)/?$ item-display.php?bibid=$1 [L]

Мне кажется, проблема в том, что он просматривает весь URL, а не только последнюю часть идентификатора элемента.

...