【问题标题】:Passing URL information into a PHP page将 URL 信息传递到 PHP 页面
【发布时间】: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

但我想以

的身份访问该 URL
http://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

标签: php .htaccess xampp


【解决方案1】:

你可以试试这个:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ upload.php?q=$1 [PT,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^device/(.*)$ /device/upload.php?deviceId=$1 [QSA,L]

【讨论】:

  • 完美 - 我现在将所有流量重定向到我的上传 PHP 脚本中。
【解决方案2】:

为什么你没有这样的网址: localhost/device?deviceId=A1234&type=event&devicesig=e4876

【讨论】:

  • 我的客户在其记录的请求中指定资源部分为 /device/deviceId?type=event@devicesig=e4876。我最初的想法更多的是你的建议,但我试图弄清楚他的要求是否正确/我假设的解决方案是错误的。
猜你喜欢
  • 1970-01-01
  • 2011-01-16
  • 2012-04-28
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
相关资源
最近更新 更多