Я хочу добиться чтения и печати данных JSON без расширения URL-адреса .php. Но сервер возвращает ошибку.
Мой PHP-код (data.php) выглядит следующим образом:
<?php
// GET FULL PAGE URL
$link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// GET EVRYHING AFTER THE LAST SLASH
$params = substr($link, strrpos($link, '/') + 1);
// PASS THE PARAMETERS TO API
$url = "http://api.plos.org/$params";
//read json file from url in php
$readJSONFile = file_get_contents($url);
header('Content-Type: application/json'); //
print_r($readJSONFile); // display contents
Файл .htaccess для удаления расширения .php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Я получаю правильные данные, если я получаю доступ с расширением .php (https://local.test/data.php/search?q=title:ДНК), когда я пытался без расширения .php, он возвращал ошибку 404. https://local.test/data/search?q=title:ДНК
Вы можете попробовать изменить содержимое файла .htaccess
с помощью:
RewriteEngine On
RewriteBase /
RewriteRule ^data/search$ data.php [L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)/?$ /$1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . index.php [L]
Может быть, вы можете попробовать RewriteRule ^api/chart/([^/]*)/?([^/]*)/?([^/]*)$ api/chart.php chart.php?id=$1¶m2=$2¶m3=$3¶m4=$4 [L]
, так что URL будет domain.com/api/chart/DNA/07APR2022/2022-03-30/17500
Спасибо за ваш ответ. Выдавало внутреннюю ошибку сервера
Вот как выглядит мой файл .htaccess: RewriteEngine On RewriteBase / RewriteRule ^api/chart/([^/]*)/?([^/]*)/?([^/]*)$ api/chart.php chart.php?id=$1¶m2=$2¶m3=$3¶m4=$4 [L] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*)/?$ /$1.php [L] RewriteCond %{REQUEST_FILENAME} ! -f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule . index.php [Л]
RewriteRule ^api/chart/([^/]*)/?([^/]*)/?([^/]*)/?([^/]*)$ api/chart.php?param1=$1¶m2=$2¶m3=$3¶m4=$4 [L]
это может работать правильно
Привет, спасибо, это сработало! У меня есть динамические параметры (DNA&07APR2022&2022-03-30&17500) domain.com/api/chart.php/DNA&07APR2022&2022-03-30&17500. Как я могу добиться этого без .PHP? Спасибо еще раз