Перезапись URL не работает, когда некоторые переменные строки запроса пусты - PullRequest
0 голосов
/ 23 ноября 2011

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

RewriteRule dest/(.*)/item/(.*)/aId/(.*)/tId/(.*)/? rss.php?dest=$1&item=$2&aId=$3&bId=$4 [NC,L]

Это дает следующий URL http://domain.com/dest/NYC/item/coke/aId/1234/bId/asdbg

Но если aId и tId отсутствуют, выдается ошибка 404: http://domain.com/dest/NYC/item/coke

Пожалуйста, кто-нибудь может помочь мне понять, почему? Большое спасибо

1 Ответ

0 голосов
/ 23 ноября 2011

Поскольку /dest/NYC/item/coke не будет совпадать с регулярным выражением dest/(.*)/item/(.*)/aId/(.*)/tId/(.*)/?, то есть чистый URL, оптимизированный для SEO, не переписывается для обработки rss.php, и я собираюсь предположить, что у вас нет дерева каталогов в корне документа, который выглядит как "/ dest / NYC / item / coke", то есть 404. Вам нужно будет немного изменить правила, чтобы приспособиться к отсутствующим параметрам:

RewriteRule ^dest/(.*)/item/(.*)/aId/(.*)/tId/(.*)/?$ rss.php?dest=$1&item=$2&aId=$3&bId=$4 [NC,L]
RewriteRule ^dest/(.*)/item/(.*)/?$ rss.php?dest=$1&item=$2 [NC,L]

Второе правило будет обрабатывать случай, когда aId и tId отсутствуют в чистом URL.

...