尽管我的 .htaccess 配置和虚拟主机设置似乎是正确的,但我在 Laravel 9 中遇到了 NotFoundHttpException 错误。以下是我的设置的详细信息:
.htaccess 位于公共文件夹内:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Header set X-Frame-Options SAMEORIGIN
</IfModule>
虚拟主机配置:
<VirtualHost *:80>
ServerAlias *.afterhire.local
ServerAdmin webmaster@localhost
DocumentRoot "/var/www/html/afterhire/public/"
<Directory "/var/www/html/afterhire/public/">
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
尽管有这些配置,当我尝试访问任何 Laravel 路由或其基本 url(如 127.0.0.1:8000 或 admin.afterhire.local)时,我会遇到 NotFoundHttpException。导致此错误的可能原因是什么?如何排除和解决它?
您可以使用
php artisan serve
来运行您的网站,而不是通过 Apache 等 http 服务器来运行您的网站。
如果您遇到相同的错误,那么问题将出在您的
routes/web.php
或内核、中间件等方面。
否则它会在你的 php 配置中。 检查您是否启用了所需的 php 模块,包括 URL 重写。
如果所有这些检查都通过,我最好的建议是从一个干净的 Laravel 项目开始,然后将代码复制到卡盘中,看看哪里出错了。