簡體   English   中英

在 Ubuntu 中將 AllowOverride 更改為 All 后出現 500 內部服務器錯誤

[英]500 Internal Server Error after changing AllowOverride to All in Ubuntu

我的項目在 Blue 主機共享主機以及我的 XAMPP 本地主機中運行良好。

為了測試,我們將文件移動到本地 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 rx

我做了這些更改參考https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working

默認情況下,Apache 禁止使用 .htaccess 文件來應用重寫規則,因此首先您需要允許對文件進行更改。 在此路徑/etc/apache2/sites-available/000-default.conf 中使用 nano 或您喜歡的文本編輯器打開默認的 Apache 配置文件

$ 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

我按照這些步驟操作,我的問題解決了。

並且首先

我有同樣的問題。 經過大量搜索后,我發現@Doug Smythies 的方式非常適合我。 上票。

所以我去終端並運行以下代碼:

須藤 a2enmod 重寫
sudo service apache2 restart 就是這樣。 希望這會幫助其他人。

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

從您的目錄名稱中刪除項目 1,然后解決問題。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM