Сейчас я работаю в 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, если вы даже не используете ее.