.htaccess 文件未运行且内部服务器错误

.htaccess 文件未运行且内部服务器错误

我使用的是 ubuntu 14.04,有 LAMP 环境。我在目录中有一个项目/var/www/html/project1。它无法访问.htaccess用于重写 url 规则的文件。

为此我必须改变/etc/apache2/apache2.conf文件

 <Directory /var/www/>
      Options Indexes FollowSymLinks
      AllowOverride All       # change None to All
      Order allow,deny
      allow from all
      Require all granted
 </Directory>

但是经过这次更改后,我的 Apache 服务器给出了错误“内部服务器错误”,并且 Apache 也给出了任何网站(项目)的错误。

如果我改变'允许覆盖无'然后网站运行正常,但是.htaccess 文件不起作用。

'内部服务器错误'是由于另一个项目中的 .htaccess 文件是这样的

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L] 

我不明白 htaccess 文件中的任何内容。请帮助我重写 htaccess 文件及其含义。

谢谢

答案1

您不应该更改默认块中的指令,而应该使用专门针对您的项目目录的单独块:

<Directory /var/www/html/project1>
  Options Indexes FollowSymLinks
  AllowOverride All
  Order allow,deny
  allow from all
  Require all granted
</Directory>

这将只允许在此特定目录中使用 .htaccess 文件。

您收到的 500 错误可能是由于 .htaccess 文件中的某些语法错误造成的。如果您能向我们展示所有 .htaccess 文件中的内容,那将非常有帮助。

或者,您可以查看 Apache 错误日志 /var/log/apache2/error.log 以获取有关该错误的更多具体信息。

相关内容