2015-06-10 2 views
0

Я создаю ссылку для загрузки, которую я отправил по электронной почте, чтобы загрузить pdf-файл. В ссылке загрузки есть некоторые параметры (base64 encoded) для проверки правильного профиля/пользователя. Я хочу быть ссылкой для скачивания следующим образом:Создайте переменную php из URL без получения

www.example.com/download/ZW5jb2RlbXljb2Rl

Параметры добавляют непосредственно после подкаталога. Я знаю, что это можно сделать с помощью PHP GET следующим образом: www.example.com/download/index.php?base64=ZW5jb2RlbXljb2Rl

Но, на мой взгляд, лучше использовать первый URL. Кроме того, я понятия не имею, как это сделать с помощью php. Мое предположение, я должен сделать переписать в htaccess?

Я нашел эту тему: Rewriting a URL to a PHP parameter from inside a subdirectory

Но у меня уже есть некоторый HTAccess переписывает (Joomla), и это только для единственной папки ...

Спасибо за ваши усилия!

+0

Итак, вы уже знаете ответ: вам нужно правило перезаписи. Но вы не хотите добавлять другое правило перезаписи. Так что может кто-нибудь сказать на это? – developerwjk

+2

Вы можете использовать: 'www.example.com/download/index.php/ZW5jb2RlbXljb2Rl', и строка будет доступна в' $ _SERVER ['PATH_INFO'] '. Иначе вам потребуется другое правило перезаписи. –

+0

Я использовал ответ Панама Джека, он предложил переписать URL. Thx для ур помочь! – user3278918

ответ

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] 

В противном случае вам придется делать то, что говорит Джонатан и использовать index.php в вашей URL.

+0

спасибо за ваш ответ. Я использовал эту переписку и решил все для меня. – user3278918

1

Вы можете использовать echo basename($_SERVER['PHP_SELF']);, чтобы увидеть свою текущую страницу. Вы можете взорваться строку после последнего / использованием, что:

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

Таким образом, если ваша ссылка www.example.com/download/ZW5jb2RlbXljb2Rl, то значение имени файла будет «ZW5jb2RlbXljb2Rl».

Я не уверен, что это ваш вопрос, но это должно работать в зависимости от использования.

+1

Вам понадобится правило перезаписи, иначе этот URL просто вызовет ошибку 404. –