将URL信息传递到PHP页面

时间:2013-11-29 18:29:04

标签: php .htaccess xampp

我正在创建一个网站,可以按媒体设备上传文件。我想创建一个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

但我想以

的身份访问该网址
http://localhost/device/A1234?type=event&devicesig=e4876

当我这样做时,我收到了“ 在此服务器上找不到请求的网址。如果您手动输入了网址,请检查拼写并重试。 “错误。

如何定义/编码使'A1234'被视为deviceId,而不是目录的某些部分?

谢谢!

更新

当我阅读下面的评论时,我想知道我的核心假设是否不正确。首先,我假设要获取设备的所有文件,并获取特定文件,我将使用以下GET语句:

GET /device/ABC123
GET /device/ABC123/file1.dat

因此,我的POST语句将匹配该层次结构:

POST /device/ABC123/file1.dat

对于下面的评论,这是否意味着我必须拿走我的整个网址,并在主机和资源(“设备”)之后解析它,以便获取正确的设备('ABC123')?

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

为什么你没有像这样的网址: ?本地主机/设备的DeviceID = A1234&安培;类型=事件&安培; devicesig = e4876