2012-01-18 2 views
1

У меня есть файл php, который нужно вызывать напрямую. Он предоставляет PDF-контент и выводит его через заголовки приложений/PDF, чтобы пользователь не покидал страницу, с которой они звонили.Предотвращение выставления фактического URL

Этот файл php расположен в глубине структуры папок php-библиотек. Я в настоящее время ссылки на файл PHP как так:

<a href="myserver.com/path/to/actual/phpFile/downloadPDF.pdf?arg1=blah&arg2"> 

Я предпочел бы мои пользователи не знают подробности, как имена каталогов и файлов PHP. Безопасность путем обфускации, не так ли?

Каков наилучший способ создания перенаправления, который выполняет то, что я ищу?

+2

Скрытие структуры каталогов не помогает безопасности. Выгоды были бы чисто косметическими. – FtDRbwLXw6

ответ

3

Чем проще решение, чтобы найти или создать .htaccess файл, который вы должны затем место в каталоге htdocs.

Добавьте эти строки кода в нем:

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ^(.*)yournewaddress$ /path/to/actual/phpFile/downloadPDF.pdf?arg1=blah&arg2 

Тогда вы можете позвонить в файл в формате PDF с

<a href="myserver.com/yournewaddress"> 
0

поставил

<?php 
include "path/to/actual/phpFile.php"; 
?> 

в downloadPDF.pdf в вашем вебсервера и ссылку на это.

+0

Если файл .pdf является файлом PDF, это плохая идея. Если файл .pdf является файлом PHP, я смущен, почему у него есть расширение .pdf. – SpoonNZ

+0

OQ: «У меня есть файл php, который нужно вызывать напрямую. Он отображает содержимое PDF», поэтому «путь/в/фактический/phpFile.php» является файлом PHP и /downloadPDF.pdf - это просто украшение, чтобы сделать глупые браузеры happy –

+0

Если в PDF-файле просто есть ' cHao

1

При использовании Apache, вы могли бы попробовать это правило переписывания, чтобы произвести хорошее, удобочитаемое URL-адрес

# in server-config 
RewriteRule ^/download/pdf/(.+) /path/to/actual/phpFile/downloadPDF.php?args=$1 [L,QSA] 

(при использовании .htaccess, опустить ведущий вперед-слэш)

Вы могли бы использовать URL-адрес, как

<a href="/download/pdf/blah"> 

Что-нибудь после pdf/ будет помещен в переменную $_GET['args'], которые вы можете использовать, как вы видите поместиться. Для нескольких аргументов, я рекомендовал бы отделяя их с косой чертой, например

/download/pdf/foo/bar 

... и в downloadPDF.php

$args = isset($_GET['args']) ? explode('/', $_GET['args']) : array(); 
Смежные вопросы