2013-08-27 2 views
1

У меня есть сайт PHP с docs папку в корне, структура сайта, таким образом:.htaccess перенаправлять неработающие ссылки на PHP страницу с параметрами интактных

sitename.com/docs/ 

В папке DOCS являются PDF о том, что иногда вызывают проблемы браузера из-за пробелов в именах, поэтому они не найдены (в основном, IE).

То, что я хотел бы сделать это следующим образом:

Всякий раз, когда есть сломанный URL в каталоге docs/, я хотел бы, чтобы перенаправить всю строку запроса на страницу PHP в директории Docs, но она должна сохраните имя PDF без изменений.

Таким образом, это URL является:

website.com/docs/this is a pdf 

Я хочу, чтобы перенаправить на:

website.com/docs/index.php?pdf=this is a pdf 

Оттуда, я могу захватить PDF param и исправить его и отправить запрос правильный файл.

Причина, по которой это не делается с прямым .htaccess, заключается в том, что я не могу найти решение, которое является динамическим, другими словами, количество слов в PDF является переменной и может содержать от 1 до 20 слов, разделенных пробелами.

У меня было сообщение об этом в this SO post, который получил один ответ, однако он по-прежнему не рассматривает проблему с переменной длиной URL.

Я снова попробовал это из примеров в this tutorial, но это не помогло мне вообще, поскольку я не могу понять, как это сделать должным образом.

Единственное, что я думаю, что это близко следующий код:

RewriteEngine on 
RewriteRule ^docs/(.*) /index.php?pdf=$1 [NC] 

Могу ли я закрыть?

ответ

2

Во-первых, вы должны знать, что, только статические коды могут быть записаны в файле .htaccess, и мы не можем обработать с динамическим кодом,
следующее решение может помочь вам я не тестировал

RewriteEngine on
RewriteRule ^docs/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /index.php?pdf=$1 [L]

+0

Это работало , Спасибо! –

+0

Всегда приветствую ..! –

0

Имейте ваше правило так:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^docs/((?=[^\s]*\s).+?)/?$ /docs/index.php?pdf=$1 [NC,L,B,QSA] 

Это будет перенаправлять все PDF-файлы с пробелами в /docs/index.php, оставляя пространство имен не являющиеся файлы нетронутыми.

Смежные вопросы