메신저 CakePHP에서 일하고 있습니다. 내가 그걸로 연결된 모든 컨트롤러가 나던 아닌 cakephp 파일에 대한 경로를 정의 할 수있는 방법을 알고 싶습니다?CakePHP - 어떻게 그와 연결된 컨트롤러가없는 non-cakephp 파일에 대한 경로를 정의 할 수 있습니까?
편의를 위해이 파일 (sitemap.php)을 webroot 폴더에 넣었습니다. 이제 어떻게 든 그것에 연결해야합니다!
메신저 CakePHP에서 일하고 있습니다. 내가 그걸로 연결된 모든 컨트롤러가 나던 아닌 cakephp 파일에 대한 경로를 정의 할 수있는 방법을 알고 싶습니다?CakePHP - 어떻게 그와 연결된 컨트롤러가없는 non-cakephp 파일에 대한 경로를 정의 할 수 있습니까?
편의를 위해이 파일 (sitemap.php)을 webroot 폴더에 넣었습니다. 이제 어떻게 든 그것에 연결해야합니다!
실제로 사용하지 않는다면 전체 CakePHP 프로세스를 건너 뜁니다. .htaccess가 지나치게 욕심 (* 존재하는 파일 *에 대한 요청을 다시 작성)하지 않으면 않는 한 sitemap.php
에 직접 액세스 할 수 있어야합니다. 그렇지 않으면 .htaccess 파일을 업데이트하여 기존 파일을 다시 쓰지 마십시오.
외부 서비스가 파일을`sitemap.xml '로 필요로한다면 CakePHP에서 재 작성을 시도하지 말고 .htaccess 파일로 다시 작성하십시오.).
결론 : 사용하지 않는 한 다시 쓰지 말고, 심지어 사용하지 않는 경우 CakePHP로 다시 작성하지 마십시오.
좋아, 나는 DocumentRoot를 발견 htaccess로 파일에서이 같은 대구 뭔가 관리했습니다 : 한다 RewriteRule ^/sitemap.xml의 $ 응용 프로그램/웹 루트/custom_scripts/sitemap.php 그러나 그것이 작동하지, 그것은 보인다을! – TomyLeeJhones
위트 홀 존경심, 왜 단순히 케이크를 사용하여 이것을 할 수있을 때 구성이 복잡합니까? cake를 통해 경로를 지정할 필요가 없다면, webroot에 넣는 것은 아파치에서 다시 쓰기가 가능하고 cakephp 인스턴스가 .htaccess 파일을 사용하여 실행되는 한 똑같이 작동합니다. 그냥 webroot 디렉토리에 php 파일을 넣고 URL : http : //mysite/sitemap.php 아파치가 재 작성 가능하고 cakephp 인스턴스가를 사용하고있는 한 ... 다시 작동합니다. htaccess 파일이 함께 제공됩니다. –
게시 된대로 더 많은 정보를 읽은 후에는 지정된 필요에 맞는 올바른 해결책 인 것 같습니다. +1 –
sitemap.php의 기능을 cakephp 응용 프로그램에서 사용할 수 있기를 원하는 것처럼 들립니다. 이것을 cakephp에 포함시키는 방법은 그것을 공급 업체로 설정하는 것입니다. 다음 단계를 따르십시오.
1 파일을 app/vendor 폴더에 저장하십시오. 2 추가, (다른 곳 또는) 컨트롤러에있는 파일을 사용하려면 : 다른 당신이하는 것처럼
App::import('Vendor','sitemap');
를 그 기능의 목록이 단지 파일 인 경우, 당신은 지금 단순히 함수를 호출 할 수 있습니다 PHP 파일. 당신은 예를 들어, 함수 호출 show_links을()이있는 경우 그래서, 당신은 공급 업체/사이트 맵을 가져온 컨트롤러에 간단히 넣어 :
show_links();
를이 클래스의 경우, 당신은 클래스를 인스턴스화해야합니다
App::import('Vendor','sitemap');
$sitemap = new Sitemap;
$sitemap->show_links();
그래서, 지금 당신은 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();
}
}
?>
그리고 설정에서
/추가 할 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
행운을 빕니다 및 코딩 해피!
업데이트 됨!
@cdburgess .. 나는이 파일 (sitemap.php)을 cakePHP의 의미와 연관시키지 않기를 바란다. 난 그냥 응용 프로그램/webroot 폴더 안에 넣고 www.domain/sitemap.xml에서 직접 액세스 할 수 있어야합니다. – TomyLeeJhones
제 지식에 따라 cakePHP는 요청하는 방식대로 라우팅을 처리하지 않습니다. 이것은 Apache에서 수행되어야합니다. 그런 방식으로 파일에 액세스하려고 시도하는 경우 Time Lytle이 올바른 해결책을 갖는 것으로 보입니다. 아파치는 재 작성 규칙을 수행해야한다. CakePHP는 그림에서 빠져 나가야합니다. –
아파치에서 mod_rewrite를 사용할 수 있도록 코딩했습니다 : - RewriteRule ^/sitemap.xml $ app/webroot/custom_scripts/sitemap.php하지만 작동하지 않습니다. 내 코드에 실수가 있습니까? – TomyLeeJhones
원하는 경로 종류의 예를 들려 줄 수 있습니까? '/ folder/subfolder/sitemap.php'을 그 스크립트에 맵핑하고 싶습니까?'.php'를 제거하고'/folder/subfolder/siteemap'을 사용 하시겠습니까? '/ folder/subfolder/sitemap/arg0/arg1/arg2 /'와 같이 url/path에있는 항목을 인수로 사용 하시겠습니까? 어떤 경우이든 htaccess 파일을 조사해야합니다. 나는 그 대답이 CakePHP가 아닌 서버 설정에 있다고 생각합니다. –
나는 sitemap.xml을 .htaccess 파일로 sitemap.php로 대체 할 수있었습니다. 하지만 거기에 연결된 컨트롤러가 없습니다 routes.php 경로를 정의하는 방법을 잘 모릅니다. www.domain/sitemap.xml을 호출하면 documentRoot/app/webroot/sitemap.php에서 파일을 가져와야합니다. 이것이 내 필요입니다! 아니요, 어떤 인수도 전달하고 싶지 않습니다. – TomyLeeJhones