我有以下重写规则:
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"
。在我的虚拟机中,我的 PC 上的 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。
谢谢。
答案1
与 相同的答案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
路径:/var/www/example/htdocs/somedir/somefile.php
.htaccess 应放在 中/var/www/example/htdocs/.htaccess
。
当您收到 HTTP 403(或 500)错误时,您应该首先查看错误日志。