CakePHP – Как я могу определить маршрут к файлу non-cakephp, который не имеет каких-либо контроллеров, связанных с ним?

Сейчас я работаю в CakePHP. Я хотел бы знать, как я могу определить маршрут к файлу non-cakephp, который не имеет каких-либо контроллеров, связанных с ним?

Я поместил этот файл (sitemap.php) в папку webroot, для моего удобства. Теперь мне нужно как-то направить его!

Похоже, вы хотите использовать функциональность из файла sitemap.php в своем приложении cakephp. Способ ставки, чтобы включить это в cakephp, – это настроить его как поставщика. Следуй этим шагам:

1- Поместите файл в папку приложения / поставщика. 2- Чтобы использовать файл в контроллере (или в другом месте), добавьте:

 App::import('Vendor','sitemap'); 

Если это всего лишь файл со списком функций, теперь вы можете просто вызвать функции, как в любом другом PHP-файле. Поэтому, если у вас есть функция, называемая show_links (), например, в контроллере, где вы импортировали поставщика / карту сайта, вы просто ставите:

 show_links(); 

Если это класс, вам нужно создать экземпляр класса и использовать его, как и в любом другом месте:

 App::import('Vendor','sitemap'); $sitemap = new Sitemap; $sitemap->show_links(); 

Итак, теперь вы готовы настроить маршрут для включения функции Sitemap в файл config / routes.php:

 Router::connect('/sitemap.xml', array('controller' => 'YOUR_CONTROLLER', 'action' => 'YOUR_ACTION')); 

Это обработает последовательность кода, содержащуюся в действии, которая затем проиграет файл sitemap.php.

Итак, вкратце, вы увидите что-то вроде этого:

 <?php class SiteMapController extends AppController { var $name = 'Tests'; function show_map() { App::import('Vendor','sitemap'); $sitemap = new Sitemap; $sitemap->show_links(); } } ?> 

И в config / routes.php вы бы добавили:

 Router::connect('/sitemap.xml', array('controller' => 'site_maps', 'action' => 'show_map')); 

Затем, когда вы посещаете URL-адрес:

 http://mysite/sitemap.xml 

Он будет маршрутизировать в:

 http://mysite/site_maps/show_map 

Для получения дополнительной информации о маршрутизации вы можете посетить: http://book.cakephp.org/view/542/Defining-Routes

Удачи и счастливого кодирования!

ОБНОВЛЕНО!

Я бы пропустил весь процесс CakePHP, если вы на самом деле его не используете. Если ваш .htaccess слишком жадный (переписывая запросы на файл, который * существует *), вы должны иметь доступ к sitemap.php напрямую. Если вы не можете, обновите файл .htaccess, чтобы не переписывать существующие файлы.

Теперь, если внешним службам нужен файл `sitemap.xml ', не пытайтесь выполнить переписывание в CakePHP, просто перепишите файл .htaccess (который по вашим комментариям, возможно, вы делаете?).

Нижняя строка: не переписывайте, если вам не нужно, и не переписывайте CakePHP, если вы даже не используете ее.