.htaccess重写URL - RewriteMap

时间:2011-10-14 14:57:28

标签: .htaccess url mod-rewrite rewrite rewritemap

我有以下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 个答案:

答案 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指令中使用地图。你不能在那些范围内声明它。

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