Помогите разобраться с .htaccess

Прислано: Geldora

вс, 23/08/2009 - 11:57

Здравствуйте!

Подскажите пож-ста как правильно поправить .htaccess?

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

RewriteEngine   On
RewriteCond %{REQUEST_FILENAME}  -f
RewriteRule ^(.*)$ /rsmsantileech/check.php?file=$1 [QSA,L]

Кроме того, я добавила в этот файл строки, требующиеся Друпалу:

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
Options None
Options +FollowSymLinks

Так вот, с того момента как проапдейтила Друпал до 6ки, этот скрипт перестал работать... Сейчас стало понятно, что проблема лежит в .хтаксессе - он просто не переправляет файлы, лежащие в папке files/private на /rsmsantileech/check.php?file=

Знакомый сказал, что проблема в строчках из основного файла .хтаксесс Друпала:

«

  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
»

Так вот: как совместить эти .хтаксессы, чтобы и друпал продолжал работать, и файлы переправляло?

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано seaji в вс, 23/08/2009 - 17:38.

Вам не нужно создавать новый хтаксесс в папке "files/private"

Просто подправьте корневой хтаксесс примерно так.
перед Друпаловский реврайтом поставьте свой.
я так делал на своих сайтах, что бы друпал не хватал бессмысленные 404 ошибки
вот пример защиты от дерганья dll и asp файлов. files_404.php - мой отдельный скрипт который не затрагивает Друпал.

  # Not Found dll and asp files
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_URI} ^\/?(.*)\.(asp|dll)$
  RewriteRule ^(.*)$ files_404.php [L]
 
  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

В Вашем случае код будет примерно такой:

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_URI} ^\/?files\/private\/(.*)$
  RewriteRule ^(.*)$ /rsmsantileech/check.php?file=$1 [QSA,L]
 
  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]