Прежде всего, спасибо за RESTLER Framework, это замечательно!
Я установил API Restler на «http://api.odience.net/». Restler отвечает правильным органом ответа, но возвращает код статуса 404, если я не укажу index.php в URL-адресе. Я установил файл .htaccess, как сказано в примерах, но я не могу понять, почему он не отвечает с правильным кодом состояния.
Пример:
* – Доступ к /sandbox/about/products/en.json (и передача некоторых переменных GET + вызов метода about sandbox.php) возвращает заголовок 404, даже если возвращенные данные тела верны!
* – Если мы добавим файл index.php в url, заголовки в порядке!
Попробуйте: Access /index.php/sandbox/about/products/en.json (с теми же GET vars)
Вот мой подробный файл .HTACCESS для корневого каталога Restler:
## Can be commented out if causes errors. Options +FollowSymLinks <IfModule mod_rewrite.c> RewriteEngine On ## Begin - Rewrite rules to block out some common exploits. # If you experience problems on your site block out the operations listed below # This attempts to block the most common type of exploit `attempts` to Joomla! # # Block out any script trying to base64_encode data within the URL. RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR] # Block out any script that includes a <script> tag in URL. RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR] # Block out any script trying to set a PHP GLOBALS variable via URL. RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] # Block out any script trying to modify a _REQUEST variable via URL. RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) # Return 403 Forbidden header and show the content of the root homepage RewriteRule .* index.php [F] # ## End - Rewrite rules to block out some common exploits. ## # Uncomment following line if your webserver's URL # is not directly related to physical file paths. # Update Your API Directory (just / for root). ## RewriteBase / # RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # # If the requested path and file is not /index.php and the request # has not already been internally rewritten to the index.php script RewriteCond %{REQUEST_URI} !^/index\.php # and the request is for something within the reg server folder, # or for the site root, or for an extensionless URL, or the # requested URL ends with one of the listed extensions RewriteCond %{REQUEST_URI} /server/|(/[^.]*|\.(php|html?|json|xml|feed|pdf|vcf|raw))$ [NC] # and the requested path and file doesn't directly match a physical file RewriteCond %{REQUEST_FILENAME} !-f # and the requested path and file doesn't directly match a physical folder RewriteCond %{REQUEST_FILENAME} !-d # internally rewrite the request to the index.php script RewriteRule ^.*$ index.php [QSA,L] # </IfModule>
Чтобы защитить инфраструктуру Restler, файлы библиотеки Restler недоступны в Интернете, а файл API_ROOT / index.php включает их автоматически с помощью команды «require_once».
Пожалуйста, сообщите, как настроить эту настройку так, как ожидалось?
Измените% {REQUEST_FILENAME} в файле .htaccess на% {DOCUMENT_ROOT}% {REQUEST_FILENAME} (он работал для меня) Ниже приведено мое .htaccess содержимое файла. НТН
RewriteEngine On RewriteBase / RewriteRule ^$ index.php [QSA,L] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA]