我希望能够在Laravel环境中生成“子文件夹”页面。 “子文件夹”是指本地URL localhost / subpage中的子页面。
我正在使用Ubuntu 15.04,Apache 2.4.10和Laravel 5.1
文档根页(在我的虚拟主机站点laravel.dev上)可以工作,并在路径“/”处生成预期的Laravel页面。对超出文档根目录(laravel.dev/test)的路径的任何调用都会产生404错误。
在路径(laravel.dev/index.php/test)中包含“index.php /”会生成预期的Laravel页面。下面引用的stackoverflow问题表明问题可能与etc / apache2 / apache2.conf指令或.htaccess指令有关。
etc / apache2 / apache2.conf的相关部分是
<Directory /home/me/Laravel/public/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
我将allowOverride从None更改为All,希望这将允许主要的Laravel .htaccess文件执行,并且实际上将index.php文件合并到路径中。
我为启用虚拟主机而创建的虚拟主机文件的相关部分是
<Directory "/home/me/Laravel/public/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
主要的Laravel .htaccess文件是
<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]
</IfModule>
这个.htaccess文件不受Laravel安装的影响。
正如对此stackoverflow问题的回答所建议的那样,我的.htaccess文件中的RewriteRule没有前面的正斜杠。