Laravel xampp 中的虚拟主机设置仅适用于第一页

Laravel vhosts setup in xampp is working for only first page

我正在处理 laravel 项目。它适用于 php artisan。当我设置 vhosts 时它只工作索引页面(欢迎页面)但是当我点击登录、注册或任何其他页面时它不工作。显示找不到页面。

我的httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/my_laravel/public"
    ServerName laravel.dev  
    ServerAlias laravel.dev            
    ErrorLog "logs/laravel.log"
    CustomLog "logs/custom.laravel.log" combined
    <Directory "C:/xampp/htdocs/my_laravel/public">
        AllowOverride All
        Options Indexes FollowSymLinks
        Require all granted
    </Directory>
</VirtualHost>

还有我的hosts file

127.0.0.1 laravel.dev

.htaccess 文件在 public 文件夹中

<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]


</IfModule>

您必须在 public/.htaccess 文件中定义 URL 重写。 检查那里的设置是否正确。 Laravel 默认文件如下所示:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ / [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

只需备份您的 .htaccess 并尝试将其复制粘贴到您的 htaccess 文件中并检查它是否有效。如果您使用 Laravels 授权,您还必须添加此

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

也许您还必须打开模块 mod_rewrite.cmod_negotiation.c(如果它们尚未打开)。 您可以通过在 apache\conf\httpd.conf

中搜索并取消注释所需模块的行来执行此操作

无论出于何种原因,如果您想自定义 .htaccess,网络上有很多可用资源。