Apache mod_rewrite и использование RewriteMap - PullRequest
0 голосов
/ 03 августа 2009
Options +FollowSymLinks

RewriteEngine On
RewriteMap name2id txt:/path/to/map.txt

RewriteRule ^/mods/([^/]+)\.html$ /mod.php?id=${name2id:$1|0} [QSA,L]

Первый раз для перезаписи URL с помощью rewriteMap. У меня есть код выше, но он возвращает страницу 404, если я запускаю http://example.com/mysite/mods/abc.html в моем браузере. Я поместил приведенный выше код в мой файл виртуального хоста в конфигурации apache, я читал на некоторых форумах, что rewriteMap работает, только если у вас есть доступ к httpd.conf и виртуальному хосту. mod_rewrite работает на моем компьютере с Windows, потому что я смог запустить некоторое правило, определенное в моем файле .htaccess.

map.txt содержит

abc 123
def 456
ghi 789

Ответы [ 2 ]

1 голос
/ 03 августа 2009

Если вы запрашиваете /mysite/mods/…, ваше правило должно быть:

RewriteRule ^/mysite/mods/([^/]+)\.html$ /mod.php?id=${name2id:$1|0} [QSA,L]
0 голосов
/ 03 августа 2009

Если вы используете RewriteBase, попробуйте удалить начальную косую черту в правиле:

RewriteRule ^mods/([^/]+)\.html$ /mod.php?id=${name2id:$1|0} [QSA,L]
...