.htaccess 文件导致“500 内部服务器错误”,但没有错误日志条目

.htaccess 文件导致“500 内部服务器错误”,但没有错误日志条目

我手动设置了一个 apache,并使用此代码添加了第二个 web 目录:

Alias /webs c:\webs
<Directory /webs>
    AllowOverride All
</Directory> 

但是,该网站中有一个 .htaccess 文件,访问该网站时出现错误:“500 内部服务器错误”,但没有在错误日志文件中写入任何内容。

但是当我删除 .htaccess 文件时,没有出现此错误。

我添加了“AllowOverride All”行并重新启动了服务器,但这并不能纠正错误。

我的.htaccess 是这样的:

RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?params=$1 [L,QSA]

<Files "test">
    Order Allow,Deny
    Allow from all
</Files>

我必须做什么才能使用该目录中的 .htaccess 文件?

答案1

在 Apache Web 服务器中启用 mod_rewrite。也可以尝试以下操作:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?params=$1 [L,QSA]

    <Files "test">
        Order Allow,Deny
        Allow from all
    </Files>
</IfModule>

如果启用了 mod_rewrite,则启动重写引擎;否则它不执行任何操作。

答案2

好的,我解决了这个问题,但结果发现还有另外两个问题,我会在这里记录下来,以防对某人有帮助:

在我的php.ini文件,我必须设置:

display_errors = On

这样它就会显示错误(即使我有“error_reporting = E_ALL & ~E_STRICT”)。

然后错误是我试图将 RedBean 与 SQLite 一起使用,并且需要在我的php.ini文件:

extension=php_pdo_sqlite.dll
extension=php_sqlite3.dll

相关内容