我有以下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”。
答案 0 :(得分:1)
你打开了重写引擎吗?需要定义RewriteEngine on
。另外,请检查此文件夹是否具有必要的AllowOverride
值,以便执行此操作。
顺便说一下,我会考虑使用尾随斜杠:
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?shop_id=${map_company:$1} [NC,L,QSA]
答案 1 :(得分:0)
看起来您无法在.htaccess文件中声明RewriteMap:
RewriteMap指令不能用于section或.htaccess文件中。您必须在服务器或虚拟主机上下文中声明映射。您可以在这些范围内的RewriteRule和RewriteCond指令中使用地图。你不能在那些范围内声明它。