Существует одна «трюка» для этой проблемы , которая подходит ко всем сценариям, настолько очевидное решение, что вам придется попытаться поверить, что это действительно работает ...:)
Здесь это ...
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]
</IfModule>
В принципе, вы запрашиваете MOD_REWRITE для пересылки index.php
запроса URI всегда, когда файл существует, и всегда, когда запрошенный файл не существует!
Изучая исходный код MOD-REWRITE, чтобы понять, как он работает, я понял, что все его проверки всегда происходят после проверки, существует ли файл ссылки. Только тогда обрабатываются RegEx
. Даже когда ваш URI указывает на папку, Apache будет принудительно проверять наличие индексных файлов , перечисленных в его файле конфигурации.
Основываясь на этом простом открытии, стало очевидной простая проверка файла будет достаточно для всех возможных вызовов, поскольку мы дважды используем проверку наличия файла и маршрутизируем оба результата в одну и ту же конечную точку, покрывая 100% возможностей.
ВАЖНО: Обратите внимание, что нет "/" в index.php
. По умолчанию MOD_REWRITE будет использовать папку, для которой он настроен как «базовая папка» для пересылки. Красота заключается в том, что необязательно быть «корневой папкой» сайта, позволяя этому решению работать для localhost/
и / или любой вложенной папки, к которой вы его применяете.
В конечном итоге некоторые другие решения, которые я тестировал раньше (те, которые, казалось, работали нормально), нарушили способность PHP «требовать» файл через его относительный путь, который является обломком. Будьте осторожны.
Некоторые люди могут сказать, что это неэлегантное решение. Это может быть, на самом деле, но, что касается тестов, в нескольких сценариях, нескольких серверах, нескольких разных версиях Apache и т. Д., Это решение работало на 100% во всех случаях!
Вы не можете получить доступ к внешней сети по бесплатному тарифу; что находится внутри, а что снаружи, конечно, зависит от Google (в документации написано «Только сервисы Google»). На этот вопрос ответили в на этот вопрос . Согласно этому ответу, вы не должны ожидать доступа к API Spreadsheets со свободного уровня.
Последний список поддерживаемых сервисов:
Cloud BigQuery
Cloud Bigtable
Предотвращение потери данных в облаке
Cloud Datastore [ 116]
Cloud DNS
Cloud Firestore
Cloud Machine Learning Engine
Cloud Natural Language API
Cloud Pub / Sub
[1112 ] Cloud Resource Manager
Cloud Spanner
Облачный речевой и текстовый API
Облачный SQL
Облачное хранилище
Облачный API-интерфейс
Cloud Vision API
Cloud Video Intelligence API
Firebase (БД, хранилище, аналитика, аутентификация)
Google Stackdriver Debugger
Отчеты об ошибках Google Stackdriver
Ведение журнала Google Stackdriver
Мониторинг Google Stackdriver
Отслеживание Google Stackdriver
Google Compute Engine
blockquote>