我有以下重写规则:
RewriteRule ^products/([a-zA-Z]+)$ /project/clients/index.php?database=$1&module=products [L,QSA]
目录结构如下:
/var/www/project/clients/index.php
当写入地址"http://host/products/clientA/"被定向到"/project/clients/index.php?database=clientA&module=products" 。 在我的虚拟机与Linux(debian)在我的电脑工作正常,但服务器Linux返回一个403错误。
但是如果我改用这个规则:
RewriteRule ^project/products/([a-zA-Z]+)$ /project/clients/index.php?database=$1&module=products [L,QSA]
然后写入URL: "http://host/project/products/clientA/" ,效果很好
"/var/www/project/"和子目录的权限,对于Apache来说是正确的。
谢谢。
最初的问题
同样的答案在https://stackoverflow.com/questions/3652598/error-403-when-accessing-an-address-to-rewrite :
您应该将.htaccess文件放在docroot目录(public_html或htdocs)中。 例:
url: http://example.com/somedir/somefile.php : http://example.com/somedir/somefile.php
path: /var/www/example/htdocs/somedir/somefile.php
.htaccess应该放在/var/www/example/htdocs/.htaccess 。
当您收到HTTP 403(或500)错误时,您应该首先查看错误日志。