0

我有以下 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、图像”。

4

2 回答 2

1

你打开重写引擎了吗?RewriteEngine on需要定义。此外,请检查您是否有此文件夹的必要AllowOverride值以允许您执行此操作。

顺便说一句,我会考虑使斜杠可选:

RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?shop_id=${map_company:$1} [NC,L,QSA]
于 2011-10-14T14:58:48.093 回答
1

看起来您不能在 .htaccess 文件中声明 RewriteMap :

RewriteMap 指令不能在节或 .htaccess 文件中使用。您必须在服务器或虚拟主机上下文中声明映射。一旦创建,您就可以在这些范围内的 RewriteRule 和 RewriteCond 指令中使用映射。您只是不能在这些范围内声明它。

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

于 2017-02-23T14:24:31.747 回答