У меня есть рабочий файл django.cgi, который позволяет обслуживать контент. Из многих учебников я получил следующий фрагмент кода для моего .htaccess
файла:разрешить доступ к файлам только через cgi
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ django.cgi/$1 [QSA,L]
Этот фрагмент кода позволяет доступ ко всем файлам напрямую (без использования сценария CGI).
Я хотел бы запретить прямой доступ к любому файлу, чтобы передать файл только в cgi-скрипт, кроме всех файлов в каталоге/static. Я пробовал:
order allow,deny
deny from all
<Files django.cgi>
order allow,deny
allow from all
</Files>
Но с этим решением я могу назвать www.mysite.com/django.cgi, в то время как www.mysite.com запрещен. Есть ли способ передать что-либо скрипту cgi (кроме статической папки)?
* EDIT * какой-либо причине, если я уронить RewriteCond RewriteCond %{REQUEST_FILENAME} !-f
, я получаю ошибку 500
Спасибо, я закончил вопрос по этому вопросу. Удаление RewriteCond приводит к ошибке сервера. – ProfHase85
Изменен мой ответ, чтобы предотвратить циклы. Может быть, это сработает. –
Большое спасибо, теперь это работает. Я просто не понимаю, почему: Если я удалю 'RewriteCond% {REQUEST_URI}! Django \ .cgi [NC]' и вызовет любой URL-адрес, применяется правило перезаписи, и к тому моменту оно должно завершиться в соответствии с описанием mod_rewrite: "_ [...] Если шаблон соответствует, mod_rewrite проверяет условия правила. Если ни один не присутствует, URL-адрес будет заменен новой строкой, построенной из строки Substitution, а mod_rewrite переходит к следующему правилу. «Не могли бы вы пожалуйста, объясните это? – ProfHase85