【发布时间】:2016-08-12 09:08:46
【问题描述】:
我正在尝试使用虚拟主机创建一个动态开发环境。 现在我有:
<VirtualHost *:80>
UseCanonicalName Off
VirtualDocumentRoot "C:\xampp\htdocs\%1\public"
# available aliases to use
ServerAlias *.dev
</VirtualHost>
它适用于 Laravel 的默认路由:
Route::get('/', function () {
return view('home.index');
});
但是任何其他路由都会给我很多内部重定向的 500 错误。 我使用 Laravel 5.2,除了 routes.php 和一些默认更改之外,没有任何更改。
当我将这样的域分配为 VirtualHost 时,一切正常:
<VirtualHost *:80>
ServerName example.dev
VirtualDocumentRoot none
DocumentRoot "C:\xampp\htdocs\example\public"
</VirtualHost>
如何解决这个问题,以便我可以使用动态域名,这样我就不必手动添加所有域。
提前谢谢你, 斯蒂芬·弗兰森
编辑
当我使用这个时:
http://example.dev/index.php/test
页面加载正确,但这不是我想要的。 那么如何从 url 中删除 index.php 呢?我已经检查并且所有模块都正确加载了这是我的.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]
# # Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
编辑
发现当我把RewriteRule ^ index.php [L]改成RewriteRule ^(.*)$ /index.php/$1 [L]时
但我仍然不明白为什么它在手动添加的虚拟主机上有效,但在动态生成的虚拟主机上无效,有人对此有解释吗?
【问题讨论】:
-
检查这个指南我将它用于 laravel stackoverflow.com/questions/27754367/…
-
感谢您的评论,但您通过将每个“项目”添加到虚拟主机来使用 VirtualHost。那部分确实对我有用,但我不喜欢手动添加它们,因为要添加的东西太多了。因此,我希望每个目录(例如“example”)都引用“example.dev”,这部分不起作用jet
标签: php laravel-5 xampp virtualhost virtual-hosts