Laravel虚拟主机URL去除/index.php/的解决方案求助
Laravel虚拟主机配置后URL出现/index.php/的解决方法
修正虚拟主机的Directory配置
你之前修改的/var/www/html范围太宽泛,需要确保虚拟主机配置里的Directory直接指向Laravel项目的public目录,同时DocumentRoot也必须设置为该public文件夹,否则.htaccess无法生效。示例配置如下:<VirtualHost *:80> ServerName website.dev # 替换为你实际的Laravel项目public路径 DocumentRoot /var/www/html/website.dev/public <Directory /var/www/html/website.dev/public> AllowOverride All Require all granted </Directory> </VirtualHost>修改完成后重启Apache:
sudo systemctl restart apache2确认public目录下的.htaccess文件
检查项目public文件夹中的.htaccess是否为Laravel默认内容,若被修改过,恢复成以下内容:<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] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>启用mod_rewrite模块
执行以下命令开启Apache的重写模块并重启服务:sudo a2enmod rewrite sudo systemctl restart apache2修正Laravel的.env配置
打开项目根目录的.env文件,将APP_URL设置为虚拟主机域名:APP_URL=http://website.dev然后清除配置缓存:
php artisan config:clear检查本地hosts映射
确保本地hosts文件中添加了域名与本地IP的映射:127.0.0.1 website.dev刷新DNS缓存(Windows:
ipconfig /flushdns;Linux/macOS:sudo dscacheutil -flushcache或sudo systemd-resolve --flush-caches)
内容的提问来源于stack exchange,提问作者CLOCHARd dasso
相关产品推荐
相关产品推荐

