.htaccess для PDF URL - PullRequest
       24

.htaccess для PDF URL

12 голосов
/ 02 февраля 2012

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

У меня есть это правило в моем файле .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.

1 Ответ

12 голосов
/ 02 февраля 2012

Добро пожаловать в 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.

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

...