获取服务器遇到内部错误或配置错误,无法完成您的请求

问题描述 投票:0回答:2

我遵循了https://github.com/crjoseabraham/php-mvc的基本项目结构 使用它,我创建了一个 php MVC 项目,该项目在开发服务器 AWS EC2 上运行良好。我在绑定域名后遇到重定向问题。

我已在 Apache2.conf 中对绑定域应用了以下更改。

<VirtualHost *:80>
    ServerName subdomain.mydomain.com
    ServerAlias www.subdomain.mydomain.com
    DocumentRoot /var/www/html/project-1/public
    <Directory /var/www/html/project-1/public>

        AllowOverride All
        Require all granted
    </Directory>

ErrorLog ${APACHE_LOG_DIR}/subdomain.mydomain.com_error.log
CustomLog ${APACHE_LOG_DIR}/subdomain.mydomain.com_access.log combined
</VirtualHost>

我的项目结构:

enter image description here

根目录.htaccess文件有以下代码:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/$1 [L]
</IfModule>

公共目录.htaccess代码是:

<IfModule mod_rewrite.c>
        Options -Multiviews
    RewriteEngine On
    RewriteBase /project-1/public
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
   
    RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
 
</IfModule>

因此,应用上述更改后,我可以使用域名访问我的项目,并成功打开登陆页面。但是当我单击菜单时,我收到错误:

内部服务器错误

服务器遇到内部错误或配置错误, 无法完成您的请求。

请联系服务器管理员[未给出地址] 告知他们此错误发生的时间以及您采取的操作 在此错误之前执行。

有关此错误的更多信息可能会在服务器错误中提供 记录。

为了解决此问题,我在公共 .htaccess 文件中应用了许多更改,但无法解决它。那么,您能帮我解决这个问题吗?

以下是我尝试过的更改:

RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ public/index.php?url=$1 [QSA,L]

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase //

    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Apache 错误日志:

AH00124:由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,请使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。,参考:http://subdomain.mydomain.com/

php .htaccess mod-rewrite routes apache2
2个回答
2
投票
DocumentRoot /var/www/html/project-1/public

由于您已将

DocumentRoot
设置为直接指向
public
子目录,那么您应该完全删除第一个
.htaccess
文件(您称为“根目录 .htaccess 文件”的文件 - 但它不是“根目录”) “,它位于根目录上方目录中!)

然后您只需要在

.htaccess
目录(即“根”)内有一个
public
文件,并完全删除 RewriteBase
 指令
(您设置不正确,会导致重写循环 - 500 错误)。

例如:

# The public (root) directory .htaccess file Options -MultiViews DirectoryIndex index.php RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

<IfModule>

包装纸也应该去除。

相对替换字符串重写相对于包含

.htaccess

 文件的目录的请求。这里不需要
RewriteBase


0
投票
我也遇到同样的错误,如何解决?

© www.soinside.com 2019 - 2024. All rights reserved.