相关疑难解决方法(0)

urlencoded正斜杠正在破坏URL

关于系统

我的项目中有这种格式的URL: -

http://project_name/browse_by_exam/type/tutor_search/keyword/class/new_search/1/search_exam/0/search_subject/0
Run Code Online (Sandbox Code Playgroud)

其中关键字/类对意味着使用"class"关键字进行搜索.

我有一个常见的index.php文件,它为项目中的每个模块执行.只有一个重写规则可以从URL中删除index.php: -

RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
Run Code Online (Sandbox Code Playgroud)

我在阅读搜索URL时准备搜索URL和urldecode()时使用urlencode().

问题

只有正斜杠字符会破坏导致404页面未找到错误的URL.例如,如果我搜索one/twoURL是

http://project_name/browse_by_exam/type/tutor_search/keyword/one%2Ftwo/new_search/1/search_exam/0/search_subject/0/page_sort/
Run Code Online (Sandbox Code Playgroud)

我该如何解决?我需要将index.php隐藏在URL中.否则,如果不需要,那么正斜杠就没有问题了,我可以使用这个URL: -

http://project_name/index.php?browse_by_exam/type/tutor_search/keyword/one
%2Ftwo/new_search/1/search_exam/0/search_subject/0
Run Code Online (Sandbox Code Playgroud)

.htaccess url-rewriting url-encoding http-status-code-404

70
推荐指数
3
解决办法
11万
查看次数

通过 Laravel Route 在变量中传递“\”和“/”

首先,如果这是一个糟糕的问题/做法,我们深表歉意。我对 Laravel 很陌生,所以我仍在掌握它。

我试图在 Laravel 5 路由中传递一个包含正斜杠 (/) 和反斜杠 () 的变量,但遇到了一些困难。

我使用的是以下情况:api.dev/api/v1/service/DfDte\/uM5fy582WtmkFLJg==

尝试 1:

我的第一次尝试使用了以下代码,结果自然是 404。

路线:

Route::group(array('prefix' => 'api/v1'), function() {
    Route::resource('service', 'ServiceController');
});
Run Code Online (Sandbox Code Playgroud)

控制器:

public function show($service) {
    return $service;
}
Run Code Online (Sandbox Code Playgroud)

结果:

404
Run Code Online (Sandbox Code Playgroud)

尝试 2:

我在 StackOverflow 上做了一些搜索并最终使用了以下代码,这几乎可以工作,但是,它似乎正在将 \ 转换为 /。

路线:

Route::group(array('prefix' => 'api/v1'), function() {
    Route::get('service/{slashData}', 'ServiceController@getData')
    ->where('slashData', '(.*)');
});
Run Code Online (Sandbox Code Playgroud)

控制器:

public function getData($slashData = null) {
    if($slashData) {
        return $slashData;
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

DfDte//uM5fy582WtmkFLJg==
Run Code Online (Sandbox Code Playgroud)

如您所见,它正在传递 var 但似乎正在将 \ 转换为 /。

我正在尝试创建一个 API,但不幸的是,我传递的变量超出了我的控制(例如,我不能简单地不使用 \ …

php laravel laravel-routing laravel-5.2

5
推荐指数
1
解决办法
2342
查看次数

如何在 Laravel 5 url 中使用附加获取参数传递正斜杠 (%2F)

用户可以搜索我的网站。有时,他们可能会使用包含正斜杠的搜索词(使用 / 斜杠搜索),当通过表单提交时,该搜索词会在 url 中变成 %2F。

例如

www.mysite.com/search/search+with+%2F+slash
Run Code Online (Sandbox Code Playgroud)

我已经使用了这里的答案,它非常适合给我正确的页面并且不会返回 404。

我现在的问题是我在页面上使用分页和自定义过滤器,它们都作为 url 中的 get var 传递,并且在访问 GET var 时它是空的。

例如

www.mysite.com/search/search+with+%2F+slash?page=2
Run Code Online (Sandbox Code Playgroud)

这是我目前的路线

$this->get('search/{search_term}', ['uses' => 'SearchController@search'])
->where('search_term', '(.*(?:%2F:)?.*)');
Run Code Online (Sandbox Code Playgroud)

不知道从这里做什么

php regex laravel-5

5
推荐指数
1
解决办法
3834
查看次数