.htaccess переписать URL-адреса - RewriteMap - PullRequest
0 голосов
/ 14 октября 2011

У меня есть следующая функция RewriteMap:

RewriteMap map_company txt:/var/www/vhost/domain.com/httpdocs/map_company.txt

Я пытаюсь переписать мой index.php? Shop_id = 1 в / company-name /

, поэтому мой файл map_company.txt содержит: company-name 1

Не получается заставить его работать.Вот мой файл htaccess:

# tried this
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?shop_id=${map_company:$1} [NC,L,QSA]

#and this
RewriteRule ^(\d+)/$ index.php?shop_id=${map_company:$1} [NC,L,QSA]

Если я это сделаю, то получу ошибку: Файл не существует: /var/www/vhosts/domain.com/httpdocs/company-name

У кого-нибудь есть идеи?Мне также нужно убедиться, что это не влияет на мои стандартные папки, такие как "css, js, images".

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Вы включили механизм перезаписи?RewriteEngine on должно быть определено.Кроме того, проверьте, что у вас есть необходимое значение AllowOverride для этой папки, чтобы позволить вам сделать это.

В качестве отступления, я бы подумал сделать дополнительный слеш необязательным:

RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?shop_id=${map_company:$1} [NC,L,QSA]
0 голосов
/ 23 февраля 2017

Похоже, вы не можете объявить RewriteMap в файле .htaccess:

Директива RewriteMap не может использоваться в разделах или файлах .htaccess.Вы должны объявить карту в контексте сервера или виртуального хоста.Вы можете использовать карту после ее создания в ваших директивах RewriteRule и RewriteCond в этих областях.Вы просто не можете объявить это в этих областях.

https://httpd.apache.org/docs/2.4/rewrite/rewritemap.html

...