从URL创建php变量而不是get

时间:2015-06-10 23:31:55

标签: php .htaccess mod-rewrite

我正在生成下载链接,我通过电子邮件发送该链接以下载pdf文件。下载链接中有一些参数(base64编码)来验证正确的配置文件/用户。我想成为下载链接如下:

www.example.com/download/ZW5jb2RlbXljb2Rl

参数直接在子目录后添加。 我知道可以用php GET完成如下: www.example.com/download/index.php?base64=ZW5jb2RlbXljb2Rl

但在我看来,使用第一个网址更好。除了我不知道如何用PHP完成这个。 我想我必须在htaccess中重写一下?

我找到了这个帖子:Rewriting a URL to a PHP parameter from inside a subdirectory

但是我已经有了一些htaccess重写(JOOMLA),它只是用于唯一的文件夹......

感谢您的努力!

2 个答案:

答案 0 :(得分:2)

你别无选择,只能使用重写这就是它的用途。

  

但是我已经有了一些htaccess重写(JOOMLA),它只是为了   唯一的文件夹..

这绝对没关系。您的Apache安装程序可以包含所需的重写次数。我见过100个。

所以你可以添加这些规则above你当前的Joomla规则,它应该可以工作。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^download/(.+)/?$ /download/index.php?base64=$1 [L]

否则你必须做Jonathan所说的并在你的URL中使用index.php

答案 1 :(得分:1)

您可以使用echo basename($_SERVER['PHP_SELF']);查看当前页面。 您可以使用以下内容在最后/之后展开字符串:

$filename = explode('/', basename($_SERVER['PHP_SELF']));

这样,如果您的链接是www.example.com/download/ZW5jb2RlbXljb2Rl,则文件名值将为" ZW5jb2RlbXljb2Rl"。

我不确定这是否是您的问题,但这取决于使用情况。