Как сделать обработчик всеобъемлющего в файле .htaccess? - PullRequest
2 голосов
/ 11 мая 2010

Я хочу создать правило в конце файла .htaccess, который перехватывает все, что до этого не совпадало.

Как я могу это сделать?

P.S. Я уже все перепробовал :) Вообще-то нет, но похоже, что так!

Обновление: Некоторые люди отвечают RewriteRule ^.*$ или его эквивалентом. Это не работает! Это будет соответствовать всему , включая другие «хорошие» URL.

Ответы [ 3 ]

2 голосов
/ 11 мая 2010

Здесь уже есть несколько хороших ответов, но вы ответили ...

Но тогда это соответствует всему, включая хорошие вещи.

Это потому, что вы не говорите mod_rewrite прекратить обработку совпадения. Чтобы сделать это, используйте тег «L» после каждого правила, который сообщает mod_rewrite: «Если это правило соответствует, прекратите обработку любых дальнейших правил».

RewriteRule ^RSS/([^/\.]+)/?$ rss.php?Page=$1 [L]

Вы должны поставить это после КАЖДОГО правила. Затем, когда вы поместите поймать все в конце, он будет срабатывать только в том случае, если не найдено ни одного другого правила.

ПРИМЕЧАНИЕ: если вы ТАКЖЕ обслуживаете ресурсы, которые не переписываются, такие как CSS, изображения, файлы javascript - вам, честно говоря, лучше не ловить все, так как вы не захотите переписывать их расположение.

0 голосов
/ 11 мая 2010

Звучит так, будто вы хотите взглянуть на директиву RewriteRule. Quie, возможно, что-то похожее на следующее:

RewriteRule ^ / (. +) {Target}

Это совпадет с корневым URL (/) и перенаправит его на URL {target}.

0 голосов
/ 11 мая 2010

RewriteRule .* page.php [L]?

...