我注意到关于这一问题的许多问题,但对我来说htaccess的是非常简单的:
<IfModule mod_rewrite.c>
RewriteEngine on
#somecomment
RewriteBase /restAPI/
#continue if condition is true:
RewriteCond %{REQUEST_FILENAME} !-f # somecomment
RewriteCond %{REQUEST_FILENAME} !-d # somecomment
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
#somecomment
#somecomment
</IfModule>
现在约4-5周。我在那rewritebase没有问题,但现在我不能启动我的简单RESTAPI:/
任何建议,为什么这不起作用?
RewriteCond %{REQUEST_FILENAME} !-f # somecomment
RewriteCond %{REQUEST_FILENAME} !-d # somecomment
500错误是你行尾注释的结果。 阿帕奇实际上并不支持行尾注释。
与哈希“#”字符开头的行被认为是注释,并且会被忽略。 评论可以不被包括在同一行作为配置指令。
参考: https://httpd.apache.org/docs/2.2/configuring.html#syntax
有时,行尾注释出现 ,因为一个“侥幸” 的工作 。 如果你提供所有参数的指令,那么任何尾随行被忽略。 但在这种情况下,你还没有提供任何标志 (第三参数),所以你得到的错误,它试图解释你的# somecomment
为RewriteCond
标志。
看来,如果您的上线评论
RewriteCond %{REQUEST_FILENAME} !-f # somecomment
RewriteCond %{REQUEST_FILENAME} !-d # somecomment
不会被解释为评论,但作为参数RewriteCond
。 删除这些(或移动它们上面的线RewriteCond
)。
IIRC意见只是在阿帕奇的httpd行的一开始就支持。