gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:56:47 25 4
gpt4 key购买 nike

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

为了测试,我们将文件移动到本地 ubuntu 服务器。但是 .htaccess 在这个 ubuntu 服务器上不起作用。这意味着可以使用 .php 扩展名访问的文件,但在没有 .php 扩展名的情况下会出现 404 错误。
http://172.31.0.55/project/contact.php有效,但是http://172.31.0.55/project/contact显示 404 错误

这是我使用的 htaccess 代码。

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>

但现在它在尝试访问 http://172.31.0.55/project/ 时显示 500 Internal server error

服务器版本为 Apache/2.4.18 (Ubuntu)它是一个 PHP 网站

我可以在 http://172.31.0.55/ 中看到以下代码 Apache 默认页面
The configuration layout for an Apache2 web server installation on Ubuntu systems is as follows:
/etc/apache2/
|-- apache2.conf
| `-- ports.conf
|-- mods-enabled
| |-- *.load
| `-- *.conf
|-- conf-enabled
| `-- *.conf
|-- sites-enabled
| `-- *.conf

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

我检查了它的文件权限 rwx rwx r-x
我引用 https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working 进行了这些更改

最佳答案

默认情况下,Apache 禁止使用 .htaccess 文件来应用重写规则,因此首先您需要允许对文件进行更改。使用 nano 或您喜欢的文本编辑器在此路径/etc/apache2/sites-available/000-default.conf 中打开默认的 Apache 配置文件
$ sudo nano /etc/apache2/sites-available/000-default.conf
在该文件中,您将找到 <VirtualHost *:80> block 从第一行开始。在该 block 内,添加以下新 block ,使您的配置文件如下所示。确保所有 block 都正确缩进。

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

. . .
</VirtualHost>

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

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

关于php - 在 Ubuntu 中将 AllowOverride 更改为 All 后出现 500 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com