Php Laravel Redirect::route()在vhost上指向错误的url
我今天正在编写一些代码,并发送了一个Php Laravel Redirect::route()在vhost上指向错误的url,php,laravel,laravel-4,vhosts,Php,Laravel,Laravel 4,Vhosts,我今天正在编写一些代码,并发送了一个Redirect::route()。它没有像往常一样重定向到基本url/路由,而是复制了基本url,如下所示: 我想我做错了什么,所以我回去试着找出问题所在。最后,我用一个新的vhost启动了一个新项目,并在app/routes.php中添加了以下代码: Route::get( "test1",, [ '作为'=>'测试1', 函数(){ 返回重定向::路由('test2'); } ] ); 路线::获取( "test2",, [ '作为'=>'测试2',
Redirect::route()
。它没有像往常一样重定向到基本url/路由,而是复制了基本url,如下所示:
我想我做错了什么,所以我回去试着找出问题所在。最后,我用一个新的vhost启动了一个新项目,并在app/routes.php中添加了以下代码:
Route::get(
"test1",,
[
'作为'=>'测试1',
函数(){
返回重定向::路由('test2');
}
]
);
路线::获取(
"test2",,
[
'作为'=>'测试2',
函数(){
返回“test2hello”;
}
]
);
当我在浏览器中打开时,它并没有显示“test2hello”,而是抛出了http not found错误,因为找不到。这只发生在Redirect::route()
上,它在Redirect::to()
上正常工作。它也只发生在虚拟主机上<如果我转到localhost/myurl/public/test1,代码>重定向::route()将按预期工作。有什么想法吗
更新: 我被要求提供vhost设置。我在MacOSX10.8.5上,正在使用内置的Apache。我已经在/etc/apache2/httpd.conf中取消了httpd-vhosts.conf include行的注释。我在/etc/apache2/extra/httpd-vhosts.conf中添加了一些vhosts,下面是一个:
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents/example_blog/public"
ServerName example_blog.local
</VirtualHost>
并重新启动了Apache。文件夹名为
example\u blog。本地
问题似乎与URL中有下划线有关,该下划线未通过筛选\u有效的\u URL:
(我的回答不值得称赞,因为我只是整理一下,以帮助其他人寻找解决方案)尝试以下方法:
Route::get(
'test1',
[
'as' => 'test1',
function () {
return Response::make('', 302)->header('Location', route('test2'));
}
]
);
Route::get(
'test2',
[
'as' => 'test2',
function () {
return 'test2hello';
}
]
);
正如您所看到的,我们使用响应类,该类重定向本身使用它发送标题位置:)您是如何设置vhost的?你能发布配置吗?我在我的laravel安装中测试了你的路线,没有发现任何问题。我认为这是关于重写模式的问题,或者vhost在您的项目中设置不正确。@Darwing我已经添加了vhost设置。我现在不知道指令/tag
目录
是否真的很重要,但您的vhost配置中缺少它。在中,您可以看到如何使用Laravel正确设置vhost配置的说明。各位好,我很遗憾我也遇到了这个问题。在我的例子中,域名有一个破折号。另外,我使用了一个路由组,它用花括号定义了可能的子域。我有一个名为“setup”的路由被定义为“settings/{setup}”重定向:路由('setup',array('error'=>'1')将我带到:{subdomain}.{name}。我们的site.com/settings/{setup}?error=1,这就是它试图加载的URL。连字符在域名中不应该有效吗?上帝保佑你!我把头撞在墙上想弄明白。
Route::get(
'test1',
[
'as' => 'test1',
function () {
return Response::make('', 302)->header('Location', route('test2'));
}
]
);
Route::get(
'test2',
[
'as' => 'test2',
function () {
return 'test2hello';
}
]
);