Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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 如何使用随机路径访问url?_Php_Http_Url_Server - Fatal编程技术网

Php 如何使用随机路径访问url?

Php 如何使用随机路径访问url?,php,http,url,server,Php,Http,Url,Server,我在ubunbu14.02和domain.com上使用apache2.4.7,现在除了根文档下的json之外,所有文件都在根目录下,我想访问url,比如:http sub.mydomain.com/path/randomnumbers?param=xxx来获取随机数和param,但除非它是http sub.mydoamin.com/或sub.mydomian.com/path,否则无法响应请求的php是base64json.php,它位于sub.mydomian.com/base64json.p

我在ubunbu14.02和domain.com上使用apache2.4.7,现在除了根文档下的json之外,所有文件都在根目录下,我想访问url,比如:http sub.mydomain.com/path/randomnumbers?param=xxx来获取随机数和param,但除非它是http sub.mydoamin.com/或sub.mydomian.com/path,否则无法响应请求的php是base64json.php,它位于sub.mydomian.com/base64json.php和sub.mydomian.com/json/base64json.php之下

我尝试使用url重写来指向它,然后访问虚拟主机中的随机数和参数,然后。htaccess,它说: 在此服务器上找不到请求的URL/json/randomnumbers?param=2342344

当我把整个url放在浏览器上时,它会说: 您没有访问http sub.mydomain.com/json/ldmvudhmilolt7innlc3npb25jzci6inmxntaxmjy0otizedyyzjg4mtnjkzmwm5edu4mjq0mjy2iiwiaw5zdgfudglhdglvbi6iijuwmnyzw0axzltg9hzgvkiiwidld2fiawdhdkwme1y1cmfibguionrydwusinzdxdymaxraxr5ntaxjvc3vyzmi6zmzmzmzmzfc2vc9y0= 在这个服务器上

以下是我的虚拟主机: ... 重新启动发动机 重写规则^json/base64json.php[L]
.htaccess位于var/www/subdomain/: 重新启动发动机 重写规则^json/base64json.php[L]
对于函数,base65json.php与foo.php相同,然后在数组中回显这两个元素。
有什么想法吗?

Ann

我尝试创建一个简单的重写规则,并编写代码来解析uri

档案

.htaccess

RewriteEngine On

RewriteRule ^json/ foo.php [L]
foo.php

<?php

function get_pair($uri) {
    $parsed_url    = parse_url($uri);
    $random_string = end(explode('/', $parsed_url['path']));
    parse_str($parsed_url['query'], $output);
    $param = isset($output['param']) ? $output['param'] : null;

    return array($random_string, $param);
}
var_dump(get_pair($_SERVER['REQUEST_URI']));
用于:

foo.php和.htaccess在我的系统上处于重写帮助状态


可能有一种更优雅的方法可以从URI中提取参数,但这可能会为您提供一个起点。

我添加了这一部分,重写正在进行:

选项如下符号链接 允许超越所有 要求所有授权


我不太明白你的问题。你能更明确一点并添加你到目前为止尝试过的内容吗(请编辑你的问题)?修改它,基本上我需要json文件夹下的php文件来获取查询字符串和查询参数($1)Ann,很抱歉,但这仍然是不明确的。您尚未列出有关服务器环境、文件层次结构、代码或重写规则的任何详细信息。此外,服务器是简单的apache+php,尚未全面启动。很难做到这一点,请尝试删除/重命名json文件夹,它可能与重写规则冲突。我的是sub.domain.com/json,base64json.php现在位于var/html/sub文件夹中,正在工作。我认为在.htaccess和000-default.conf中重写工作不正常,当我访问url时,仍然存在相同的问题(未找到和禁止),apache2 error.log中没有错误。同样,当您不包含任何代码时,不可能知道可能出了什么问题。请花点时间编辑并改进您的问题:现在处理url中的随机数,但仍然禁止处理url中的base64(长度为344),当我将其缩短时,它会工作,如何处理更长的base64编码url?谢谢@安妮。很高兴你找到了工作。听起来你遇到了另一个问题。我浏览了stackoverflow和serverfault。显然,url的长度没有指定的限制,但您可能会遇到一些文件系统问题:。虽然我不知道这是不是你的错误。发布一个新问题,但请具体说明您的服务器设置,包括操作系统,因为它可能是特定于环境的。解决方法可能是将url格式更改为:json/?encoded=foo&checksum=barNo one answers,似乎apache2.4.7在apache2.conf中没有它,我在其中添加了LimitRequestFieldSize/Line,仍然不能超过300个字符。
<?php

function get_pair($uri) {
    $parsed_url    = parse_url($uri);
    $random_string = end(explode('/', $parsed_url['path']));
    parse_str($parsed_url['query'], $output);
    $param = isset($output['param']) ? $output['param'] : null;

    return array($random_string, $param);
}
var_dump(get_pair($_SERVER['REQUEST_URI']));
array(2) {
  [0]=>
  string(13) "randomnumbers"
  [1]=>
  string(8) "23423424"
}
http://localhost/so-rewrite-help/json/randomnumbers?param=23423424&blah=bog