2012-02-02 3 views
12

У меня есть структура, называемая /pdf/, где хранятся сгенерированные PDF-файлы. Я пытаюсь использовать .htaccess для маршрутизации посетителей в папку PDF..htaccess для PDF-адреса URL

У меня есть это правило в моем файле .htaccess:

RewriteEngine On 
RewriteBase/
RewriteRule (.*) index.php?page=$1.html 
RewriteRule ??? for pdf?? 

(обратите внимание на ??? знаки ...)

Когда я пытаюсь получить доступ к URL /manual_chap_1 он работает. Но когда я пытаюсь выполнить /pdf/manual_chap_1, похоже, что он не работает. Вот некоторые выход я вижу:

$_GET[page] => index.php.html

Я хочу, чтобы иметь возможность создать файл PDF, если файл PDF не существует в запрашиваемом месте, а затем, я хочу, чтобы загрузить страницу HTML ,

ответ

12

Добро пожаловать в StackOverflow, попробуйте следующее:

RewriteEngine On 
RewriteBase/

RewriteRule ^pdf/([a-z0-9\-_\.]+)$ pdf.php?file=$1 [L,NC,QSA] 

RewriteCond %{REQUEST_URI} !^/pdf 
RewriteRule ^([a-z0-9\-_\.]+)/?$ index.php?page=$1.html [L,NC,QSA] 

L: код [L] флаг вызывает mod_rewrite прекратить обработку набора правил. В большинстве контекстов это означает, что если правило совпадает, дальнейшие правила не будут обработаны. Это соответствует последней команде в Perl или команде break в C. Используйте этот флаг, чтобы указать, что текущее правило следует применять немедленно, не учитывая дальнейшие правила.

QSA: При замене URI содержит строку запроса, поведение RewriteRule по умолчанию заключается в том, чтобы отменить существующую строку запроса и заменить ее вновь созданной. Использование флага [QSA] приводит к объединению строк запроса.

NC: Использование флага [NC] приводит к тому, что RewriteRule будет сопоставляться нечувствительным к регистру образом. То есть, не имеет значения, отображаются ли буквы в верхнем или нижнем регистре в согласованном URI.

Кроме того, я бы рекомендовал использовать тире вместо подчеркивания.

+0

много много спасибо – Maggie

+0

Вы очень приветствуетесь –

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