【发布时间】:2013-12-15 23:50:56
【问题描述】:
我正在创建一个网站,该网站将为每个媒体设备上传文件。我想创建一个 URL,以便用户传入 deviceId 和设备签名,例如:
http://somesite/device/deviceId?devicesig='ABC123'
在服务器上,我将它传递给我的 PHP 页面。 (我在 /device 目录中编写了一个简单的 PHP 页面,所以我知道我正在从该目录提供内容)
我在 Windows 上使用 XAMPP,并且我已经配置了我的 .htaccess:
Options FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ upload.php?q=$1 [PT,L]
</IfModule>
以及设置:
<IfModule dir_module>
DirectoryIndex upload.php
</IfModule>
我可以访问 URL(当然缺少实际的 deviceId)
http://localhost/device/upload.php?type=event&devicesig=e4876
但我想以
的身份访问该 URLhttp://localhost/device/A1234?type=event&devicesig=e4876
当我这样做时,我收到“在此服务器上找不到请求的 URL。如果您手动输入 URL,请检查您的拼写并重试。强>”错误。
如何定义/编码以将“A1234”视为 deviceId,而不是目录的某些部分?
谢谢!
更新:
当我阅读下面的 cmets 时,我怀疑我的核心假设是否不正确。首先,我假设要获取设备的所有文件并获取特定文件,我将使用以下 GET 语句:
GET /device/ABC123
GET /device/ABC123/file1.dat
因此,我的 POST 语句将匹配该层次结构:
POST /device/ABC123/file1.dat
对于下面的 cmets,这是否意味着我必须获取整个 URL,并在主机和资源(“设备”)之后对其进行解析,才能获得正确的设备(“ABC123”)?
【问题讨论】:
-
你的deviceId是变量,devicesig是另一个变量? PHP中的deviceId是怎么捕获的?
-
deviceId 和 devicesig 都是变量。我试图通过拥有 ../device 来遵循良好的 RESTful 实践,然后在下面管理设备。在 PHP 中,我将解析 URL,并使用 deviceId,将传入的实际文件写入正确的目录:/some/dir/deviceid/
-
所以最终的URL一定是这样的:http://localhost/device/upload.php?deviceId=A1234&type=event&devicesig=e4876