Напишите файл .htaccess без %{REQUEST_FILENAME}

Итак, у меня есть нелепая проблема, с которой хостинговая компания не может справиться сама. У меня есть веб-сайт на сервере Windows, на котором работает ISAPI Rewrite 3, что позволяет мне использовать файлы .htaccess для wordpress. Но я заметил, что

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

заявления не работают. Их просто игнорируют. Это проблема конфигурации? Тем временем у меня есть сайт с этой умной строкой, которую я откуда-то украл.

RewriteCond %{REQUEST_URI} (/[^.]*|\.(html?|php))$  [NC]

Проблема в том, что с помощью этой строки я не могу получить доступ к существующему каталогу. Бывший. /wp-admin/ поэтому, если я хочу внести изменения в админку, я должен включить эту строку, которая ограничивает IP-адрес, внести изменения, а затем отключить эту строку. Совершенно нелепо.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} (/[^.]*|\.(html?|php))$  [NC]
#disallow or allow just my IP address
#RewriteCond %{REMOTE_HOST} !1.2.3.4
RewriteRule .* /index.php [L]

Любые решения, чтобы я мог по-прежнему получать доступ к существующим каталогам без использования %{REQUEST_FILENAME}?


person BFTrick    schedule 03.08.2011    source источник
comment
Казалось бы, REQUEST_FILENAME не предоставляется IIS: msdn.microsoft.com/en-us/library/ms524602%28v=vs.90%29.aspx   -  person Marc B    schedule 03.08.2011
comment
Какое программное обеспечение для перезаписи (ISAPI) вы используете?   -  person LazyOne    schedule 03.08.2011
comment
@LazyOne Я использую ISAPI Rewrite 3   -  person BFTrick    schedule 03.08.2011


Ответы (1)


Что ж... У меня есть Helicon ISAPI_Rewrite v3, работающий на IIS 6 (и 2 года назад он работал на IIS 7)... и эти инструкции на самом деле работают нормально:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Это может работать не так хорошо, если часть URL-адреса является виртуальной папкой/приложением.. но отлично работает с реальными файлами и папками. Вместо этого попробуйте это (должно работать точно так же, если не задействованы виртуальные вещи):

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
person LazyOne    schedule 04.08.2011