2009-10-10 12 views
0

services.php에있는 메인 섹션과 services_logodesign.php와 같은 하위 섹션이 필요합니다.Mod 재 작성 문제

내가 좋아하는 URL의 모습 만들고 싶어 : 나는 여러 가지 다른 하위 섹션이

"을 서비스/로고 디자인"을 표시해야합니다 services_logodesign.php 브라우저를 열 수있는 버튼을 클릭하면 를, 그것으로 좋은 것이다 다른 페이지에 대해 하나의 코드가 있어야합니다.

+1

"문제"는 무엇입니까? 나는 mod_rewrite가 답 인 것을 알고 있다고 가정하고, 다시 쓰는 규칙은 어떻게 작동하지 않습니까? – Kekoa

답변

0

원하는 작업을 수행하는 가장 간단한 방법은 모든 요청을 본질적으로 디스패처 스크립트로 리디렉션하는 것입니다. index.php는 이러한 발송자 스크립트에 적합한 후보가됩니다.

웹 사이트의 루트에있는 당신의 .htaccess 파일을 다음과 같이 표시됩니다

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

이 mod_rewrite를 구성을 index.php 모든 요청을 보냅니다. 의미/서비스/로고 디자인/(URL 경로에있는 공간은 좋은 생각이 아닙니다) 또는/foo/bar 또는/blah/blah/blah에 대한 요청은 모두 /index.php로갑니다.

index.php 스크립트는 url 요소를 원하는 배열로 분할하여 처리 할 수 ​​있습니다.

$req = array_map("urldecode", array_filter(explode('/', $_SERVER['REQUEST_URI']))); 

당신이 PHP 코드의 요청/BLOOP/삐/blorp 라인을 보낸 경우 위는 $ REQ 배열에 다음을 넣어 것입니다 :

배열 ('풍덩', '삐', 'blorp을 ');

또는/서비스/logo_design /처럼 보일 것 같은 요청 : 배열 ('서비스', logo_design)

처리하는 간단한 방법이 배열은 다음과 같습니다

if ($req[0] == 'services') { 
    if ($req[1] == 'logo_design') { include_once(services_logodesign.php); } 
    else { include_once(services.php); } 
} 

그 작동 방법을 참조하십시오 ? 이 작업은 수행해야 할 작업의 단순화 된 예이지만 동일한 작업을 수행하는 것처럼 보이는 방식보다 훨씬 안전하고 훨씬 안전합니다.