Laravel: 带有编码字符的 URL 生成 404 异常
Laravel: URLs with encoded characters generate 404 exception
我正在做一个基于 laravel 4.2
的项目,我遇到了一个奇怪的问题。
问题
我有一个 URL 例如,
http://example.com/events/eventname/registration#get_register
以上 URL 完美运行,但是当对特殊字符进行编码时,我最终得到以下 URL
http://example.com/events/eventname/registration%23get_register
这个编码的 URL 给了我 laravel 的 404 异常。
详情:
当我通过 Skype 将我的项目 link 发送给同事并且 iOS 版本的 Skype 在消息中编码 URLs 时,我注意到了这个问题。因此,当我的同事从 Skype 打开 link 时,他遇到了异常。
更新
我的路线代码
//Free Registration
Route::any('events/{event_url}/registration', 'MyController@registration_step1');
主要问题是 url 中的散列标签未发送到服务器。它们由浏览器使用。所以当你使用http://example/#hash
时,服务器只会看到http://example/
。当散列用 %23
编码时,服务器确实获得了完整的 url。如果你想让 laravel 的路由识别 url 和 %23
那么你应该匹配它并处理它或者匹配它并重定向。例如...
Route::get('events/{event_url}/registration/*', 'MyController@registration_step1');
或...
Route::get('events/{event_url}/registration{hash?}', 'MyController@registration_step1');
取决于您是否需要捕获参数。
我正在做一个基于 laravel 4.2
的项目,我遇到了一个奇怪的问题。
问题
我有一个 URL 例如, http://example.com/events/eventname/registration#get_register
以上 URL 完美运行,但是当对特殊字符进行编码时,我最终得到以下 URL
http://example.com/events/eventname/registration%23get_register
这个编码的 URL 给了我 laravel 的 404 异常。
详情:
当我通过 Skype 将我的项目 link 发送给同事并且 iOS 版本的 Skype 在消息中编码 URLs 时,我注意到了这个问题。因此,当我的同事从 Skype 打开 link 时,他遇到了异常。
更新
我的路线代码
//Free Registration
Route::any('events/{event_url}/registration', 'MyController@registration_step1');
主要问题是 url 中的散列标签未发送到服务器。它们由浏览器使用。所以当你使用http://example/#hash
时,服务器只会看到http://example/
。当散列用 %23
编码时,服务器确实获得了完整的 url。如果你想让 laravel 的路由识别 url 和 %23
那么你应该匹配它并处理它或者匹配它并重定向。例如...
Route::get('events/{event_url}/registration/*', 'MyController@registration_step1');
或...
Route::get('events/{event_url}/registration{hash?}', 'MyController@registration_step1');
取决于您是否需要捕获参数。