首页 > 解决方案 > xampp 中的 Laravel vhosts 设置仅适用于第一页

问题描述

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

我的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公共文件夹内的文件

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

标签: phplaravelxampp

解决方案


您必须在 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 ^(.*)/$ /$1 [L,R=301]

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

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

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

也许您还必须打开模块mod_rewrite.cmod_negotiation.c如果它们还没有。您可以通过搜索并取消注释所需模块的行来做到这一点apache\conf\httpd.conf

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


推荐阅读