错误500:的.htaccess的RewriteCond:坏的标志符(Error 500: .hta

2019-10-24 10:13发布

我注意到关于这一问题的许多问题,但对我来说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:/

任何建议,为什么这不起作用?

Answer 1:

RewriteCond %{REQUEST_FILENAME} !-f  # somecomment 
RewriteCond %{REQUEST_FILENAME} !-d  # somecomment 

500错误是你行尾注释的结果。 阿帕奇实际上并不支持行尾注释。

与哈希“#”字符开头的行被认为是注释,并且会被忽略。 评论可以被包括在同一行作为配置指令。

参考: https://httpd.apache.org/docs/2.2/configuring.html#syntax

有时,行尾注释出现 ,因为一个“侥幸” 的工作 。 如果你提供所有参数的指令,那么任何尾随行被忽略。 但在这种情况下,你还没有提供任何标志 (第三参数),所以你得到的错误,它试图解释你的# somecommentRewriteCond标志。



Answer 2:

看来,如果您的上线评论

RewriteCond %{REQUEST_FILENAME} !-f  # somecomment 
RewriteCond %{REQUEST_FILENAME} !-d  # somecomment 

不会被解释为评论,但作为参数RewriteCond 。 删除这些(或移动它们上面的线RewriteCond )。

IIRC意见只是在阿帕奇的httpd行的一开始就支持。



文章来源: Error 500: .htaccess RewriteCond: bad flag delimiters