在Ubuntu中将AllowOverride更改为All后500内部服务器错误

时间:2017-06-08 14:34:55

标签: php apache .htaccess ubuntu

我的项目在Blue主机共享主机以及我的XAMPP localhost中运行良好。

为了测试,我们将文件移动到本地ubuntu服务器。但.htaccess无法在这个ubuntu服务器上运行。
这意味着文件可以通过.php扩展访问,但是在没有.php扩展的情况下接收时会出现404错误。

.test有效,但是 http://172.31.0.55/project/contact.php显示404错误

这是我使用的htaccess代码。

http://172.31.0.55/project/contact


经过一些研究后,我改变了Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase /project/ ## hide .php extension # To externally redirect /dir/foo.php to /dir/foo RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php[\s?] [NC] RewriteRule ^ %1 [R=301,L] # To internally forward /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/project/$1.php -f RewriteRule ^(.+?)/?$ /project/$1.php [L] Options All -Indexes RewriteCond %{HTTP_REFERER} !^http://(www\.)?172.31.0.55/project/ [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?172.31.0.55/project/.*$ [NC] ErrorDocument 403 http://172.31.0.55/project/403-error ErrorDocument 404 http://172.31.0.55/project/404-error

中的行
/etc/apache2/apache2.conf

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride none
    Require all granted
</Directory>

但是现在它在尝试访问<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>

时显示500内部服务器错误

服务器版本为http://172.31.0.55/project/ 它是一个PHP网站

我可以在http://172.31.0.55/ Apache默认页面

中看到以下代码

Apache/2.4.18 (Ubuntu)

The configuration layout for an Apache2 web server installation on Ubuntu systems is as follows:

我尝试在htaccess中从ip地址更改为localhost。但是没有工作

我检查了文件权限/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-enabled | |-- *.load | `-- *.conf |-- conf-enabled | `-- *.conf |-- sites-enabled | `-- *.conf

我参考https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working

进行了这些更改

2 个答案:

答案 0 :(得分:3)

默认情况下,Apache禁止使用.htaccess文件来应用重写规则,因此首先需要允许更改文件。使用nano或您喜欢的文本编辑器在此路径中打开默认的Apache配置文件 /etc/apache2/sites-available/000-default.conf

$ sudo nano /etc/apache2/sites-available/000-default.conf

在该文件中,您会在第一行找到<VirtualHost *:80>块。在该块的内部,添加以下新块,以便您的配置文件如下所示。确保所有块都正确缩进。

<VirtualHost *:80>
<Directory /var/www/html>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted
</Directory>

. . .
</VirtualHost>

保存并关闭文件。要使这些更改生效,请重新启动Apache。

$ sudo systemctl restart apache2

我按照这些步骤解决了问题。

答案 1 :(得分:0)

也是第一个

我遇到了同样的问题。经过大量搜索后,我发现@Doug Smythies 的方式非常适合我。投票。

所以我转到终端并运行以下代码:

sudo a2enmod 重写
须藤服务 apache2 重启 就是这样。希望这会对其他人有所帮助。

<目录 /var/www/html/project1> 期权索引 FollowSymLinks 允许覆盖所有 命令允许,拒绝 允许所有人 要求所有授予

从您的目录名称中删除项目 1,然后解决问题。

enter image description here