Регулярное выражение исключает определенные файлы - PullRequest
1 голос
/ 26 декабря 2011

У меня есть регулярное выражение, которое перенаправляет любые файлы в папке «/ downloads» в скрипт PHP, который затем обслуживает файл (вместе с другими вещами).Тем не менее, я хотел бы иметь некоторые PHP-файлы, которые я могу просматривать, а не загружать их (очевидно, также проблема безопасности).Тем не менее, я не так много знаю о регулярных выражениях.Я ищу нито, но не понимаю :(

<IfModule mod_rewrite.c>
RewriteEngine on

#Redirect any file coming in to the downloads manager
RewriteRule ^(.+\.*) /downloads?file=$1 [R,L]
</IfModule>

Единственное, что я могу найти на данный момент, чтобы это работало, это RewriteRule ^(.+\.php)$ - [L]. Однако, это не работает. Если кто-то может быстрообъясните это или дайте мне что-нибудь для работы, это было бы здорово!
Кроме того, как вы, возможно, уже поняли, это перенаправляет в index.php папки / downloads. Если бы вы могли объяснить, почему она не загружаетсяСамо по себе, это было бы здорово. Он загружается, когда я захожу на downloads / index.php, но не просто / downloads. Не требуется информация, чтобы заставить его работать, но хотелось бы знать:)
Спасибо за любые ответы.

1 Ответ

0 голосов
/ 26 декабря 2011

Используйте RewriteCond, чтобы запретить матчи, которые вам не нужны:

RewriteCond %{REQUEST_URI} !\.php$
RewriteRule (.*) /downloads?file=$1 [R]

(я удалил L, поскольку он здесь не использовался)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...