Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel Redirect::route()在vhost上指向错误的url_Php_Laravel_Laravel 4_Vhosts - Fatal编程技术网

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';
        }
    ]
);