2010-01-01 1 views
3

클라이언트 용 내부 CMS를 작성 중입니다. 각 페이지에 대해 새로운 PHP 파일을 만드는 대신 URL 기반의 페이지를로드하는 방법이 있지만 그 위치에있는 실제 PHP 파일을로드하는 방법이 있는지 궁금합니다.PHP : 파일 구조없이 .php 파일없이 페이지 게재

그래서 www.mysite.com/new-page를 방문하면 실제 .php 파일보다는 내 템플릿, 콘텐츠 등을 참조하기 바랍니다.

죄송합니다.이 내용을 올바르게 설명하지 못해 죄송 합니다만, 설명하기가 어렵습니다.

감사합니다.

+0

나는 미디어 위키 (위키 피 디아에서 사용되는 CMS)와 같은 것을 생각하고 있습니다. 기사가 아직 없으면 (결과적으로 경로), 작성하는 데 도움이되는 페이지를로드하십시오. –

+0

물론 이것은 라우팅이라고합니다. 좋은 구현은 Ruby on Rails, Django, CodeIgnitor 등과 같은 MVC 프레임 워크에서 찾아 볼 수 있습니다. – JAL

답변

4

Front Controller pattern과 같은 소리가납니다.

기본적으로 모든 URL은 처리 할 작업을 결정하는 하나의 PHP 페이지로 리디렉션됩니다. 이 htaccess로와이 아파치 mod_rewrite를 사용할 수 있습니다

RewriteEngine on 
RewriteBase/
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php 

index.php를 정적 콘텐츠 파일을 제외한 모든 리디렉션 그. 필요에 따라 조정하십시오. 그냥 다음 URL/새로운 페이지에 영향을 미칠 같은 것을 시도하려는 경우

: "새로운 페이지"로 시작하는

RewriteEngine on 
RewriteBase/
RewriteRule ^new-page/ myhandler.php 

모든 URL을 myhandler.php로 전송됩니다.

+0

예, 이것은 내가 찾고있는 것처럼 들립니다. 그러나 모든 페이지가 색인 페이지에서 제공되기를 정말로 원하지는 않습니다. 나는 여전히 www.mysite.com/page/page2 및 www.mysite.com/page-test와 같은 URL을 원합니다. 당신이 예를 들어 설명해 주실까요? –

+0

예, 올바른 구성 – jrharshath

4

일반적으로 PHP 코드와 함께 이것을 처리하는 웹 서버가됩니다. 다음 PHP 코드에서 당신이 호출되고 어떤 페이지를 참조 할 $_GET['page']을 확인할 수 있습니다

RewriteEngine on 
RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L] 

그리고 : 당신이 아파치를 사용하고 경우에 따라서, 예를 들어, 당신은 같은 것을 할 mod_rewrite를 사용할 수 있습니다.

그래서 mysite.com/page/blah을 방문하면 index.php?page=blah에 액세스하게됩니다.

1

PHP 페이지 중 하나에서 URL을 다시 쓰는 데 mod_rewrite를 사용하는 것이 해결책입니다. 서버에있는 디렉토리의 파일로 가져 가지 않는 URL을 다시 작성하는보다 일반적인 다시 쓰기 규칙을 사용하고 싶습니다.

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/favicon.ico 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]