#php #.htaccess #rss
#php #.htaccess #RSS-канал
Вопрос:
В настоящее время я разрабатываю динамический RSS-канал, который будет автоматически извлекать статьи из базы данных MySQL. Код приведен ниже
<?php
//Include the post retreival script
require_once '../phpScripts/rss_db_setup.php';
//Set the content type
header('Content-type: text/xml');
//Set up the RSS feed information
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'.
'<rss version="2.0">'.
'<channel>'.
'<title>Company Name</title>'.
'<link>http://www.company.ca</link>'.
'<description></description>'.
'<category></category>';
//Retreive posts from the database
$rssData = new rssData();
echo $rssData->generateFeed($dbcon);
//Close the feed
echo '</channel></rss>';
?>
Мне интересно, следует ли сохранить этот файл как .xml или .php? Я добавил следующую строку в свой файл .htaccess, но на самом деле не совсем понимаю, как это работает
AddType application/x-httpd-php .xml
Это правильный способ сделать это? Или я должен использовать другую функцию htaccess, такую как modRewrite, или использовать задание CRON для создания нового .xml каждый день или около того?
Комментарии:
1. все имена файлов не имеют смысла, важны заголовки и содержимое
2.
.dynamicrssrenderedviaphp
. Я, конечно, шучу. 1 к @Dagon.
Ответ №1:
RSS не нуждается в расширении. Неважно, является ли URL /feed.php
/feed.xml
или даже просто /feed/
. Это не похоже на файлы на вашем собственном жестком диске. HTTP отправляет заголовок content-type, чтобы указать, что это за файл.
Однако (официально) требуется правильный заголовок content-type. Вы указываете text / xml в своем коде, который официально должен быть application / rss xml.
Использование AddType может быть проблемой, если вы используете статические XML-файлы в другом месте на сервере. PHP будет блокировать часть в начале каждого XML-файла, выдавая хорошее сообщение об ошибке, приводящее к недопустимому xml.
Комментарии:
1. Спасибо за обновление. Не был уверен, что читатели RSS столкнутся с ошибками. Не используя XML в другом месте, но, вероятно, хорошая идея в любом случае для будущих целей
2. Вы могли бы просто поместить файл в папку с именем ‘feeds’ или что-то в этом роде и поместить туда htaccess и XML-файл. Таким образом, htaccess влияет только на эту папку, а не на остальные. Я также проверил свой собственный список каналов; примерно 40% не имеют расширения, 40% имеют расширение xml, остальные используют .rss или .php, некоторые даже с querystring .
Ответ №2:
С помощью этой AddType application/x-httpd-php .xml
строки Apache сможет обслуживать XML-файлы, содержащие некоторый PHP-код внутри. Таким образом, вы можете сохранить этот файл как .xml, код PHP будет интерпретирован
Возможно, вам следует добавить менеджер кэша, чтобы избежать создания одного и того же канала, когда нет новой статьи?
Комментарии:
1. Отлично! именно то, что я хотел знать, не уверен, как добавить диспетчер кэша, но рассмотрю это