RewriteMap не работает в mod-rewrite

Я пытался сделать простое сопоставление с директивой RewriteMap в своем htaccess, но по какой-то причине каждый раз получаю ошибку 500. мой синтаксис .. Options +FollowSymLinks

RewriteEngine on
RewriteBase /
RewriteMap name2id txt:nklist.txt
RewriteRule ^/name/(.*) /name_list_view.php?kid=${name2id:$1|NOTFOUND}

в nklist.txt:

1 David
2 Mark
3 Simon

файл nklist.txt находится в корне моего сайта, там же, где и htaccess. Насколько моя отладка говорит мне, что htaccess не может найти файл nklist.txt, но любая помощь будет благодарна.


person Wasim    schedule 22.07.2010    source источник


Ответы (1)


Судя по вашему описанию, вы пытаетесь определить RewriteMap в контексте каждого каталога через файл .htaccess, но это не разрешено. RewriteMap можно определить только в контексте каждого сервера, либо в конфигурации основного сервера, либо в разделе виртуального сервера.

Когда вы отправляете запросы на сервер и анализируется файл .htaccess, он обнаруживает директиву RewriteMap и выдает предупреждение, в результате чего возникает ошибка 500. Скорее всего, вы увидите запись в своем error_log, в которой говорится: «RewriteMap здесь не разрешен».

person Tim Stone    schedule 22.07.2010
comment
Спасибо за ответ, так что вы имеете в виду, я должен переместить текстовый файл куда-то в папку сервера? мой корневой путь: /home/mobilevi/public_html Куда посоветуете поместить файл карты? - person Wasim; 22.07.2010
comment
Нет, проблема не в вашем текстовом файле, просто вы не можете использовать RewriteMap в .htaccess, потому что это не разрешено. Вы должны установить его в конфигурации сервера, что вы, вероятно, не сможете сделать, если не будете полностью контролировать сервер. Вы находитесь на общем хосте или сами управляете сервером? - person Tim Stone; 22.07.2010
comment
извините, я не понял вашего ответа, теперь понял, я нахожусь на общем хосте, но у меня также есть свой собственный сервер. спасибо за ответ, хотя - person Wasim; 22.07.2010