访问该方法的url是这样的:
http://localhost/site/cont/method
我想使用GET方法访问此方法,如下所示:
http://localhost/new-tera/paper/lookup_doi/segment
但我的segment
部分已经包含/
,如下所示:
http://localhost/lookup_doi/segment/containing/slashes
请注意,整个segment/containing/slashes
是一个值。
我在我的方法中得到这个值:
public function method ($variable)
{
echo $variable;
}
// output:segment
而不是:segment / containing / slash
答案 0 :(得分:6)
答案 1 :(得分:2)
.htaccess桅杆
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
好吧......
$route = empty($_GET['route']) ? '' : $_GET['route'];
$exp = explode('/', $route);
结果:
$exp[0] = new-tera
$exp[1] = paper
$exp[2] = lookup_doi
$exp[3] = segment
所以我们桅杆有路由!运行示例(使用我的项目):
if($exp[0] == '')
{
$file = $_SERVER['DOCUMENT_ROOT'] .'/controllers/controller_index.php';
}
else
{
$file = $_SERVER['DOCUMENT_ROOT'] .'/controllers/controller_'.$exp[0].'.php';
}
if(!file_exists($file))
{
engine :: away();
}
include_once $file;
$class = (empty($exp[0]) or !class_exists($exp[0])) ? 'class_index' : $exp[0];
$controller = new $class;
$method = (empty($exp[1]) or !method_exists($controller, $exp[1])) ? 'index' : $exp[1];
$controller -> $method();
答案 2 :(得分:1)
您可以通过在查询字符串中添加“%2F”来添加斜杠,希望这样可以正常工作
segment = 'somethingwith%2F'
http://localhost/new-tera/paper/lookup_doi/segment
答案 3 :(得分:1)
您可以先对其进行base64编码,然后对其进行解码。实际上,您可以使用各种方法将/更改为其他内容(即a - )并将其更改回来。
echo site_url('controller / method /'。base64_encode($ variable));
公共函数方法($ variable) { $ variable = base64_decode($ variable); }