2010-04-19 10 views
6

나는 $_SERVER['REQUEST_URI']을 폭발시킨 다음 결과를 전환하여 깨끗한 URL을 만들려고합니다.모든 것을 index.php로 리다이렉트

그러나 일단 사용자가 index.php 외부로 나가면 도달 할 URL을 처리하기 위해 다시 index.php으로 리디렉션해야한다고 가정합니다. 이것을 어떻게 할 수 있습니까? 사용자가 www.domain.com/home/johndoe/...가는 경우

그래서 예를 들면, 나는 그것이 request_uri 통해 /home/johndoe/를 처리 할 수 ​​있도록 index.php ( domain.com/index.php)을 타격하고 싶습니다. 당신은 index.php에 모든 전송을 포함하여 정규 표현식을 기반으로 URL을 매핑 할 아파치의 mod_rewrite을 사용할 수 있습니다

답변

19

htaccess로 :

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?param=$1 [QSA,L] 
+1

@ 픽셀 : 이것이 가장 일반적인 방법입니다. 아파치가 파일이나 디렉토리를 찾지 못하면, index.php를 호출 할 것이다. 이제 index.php에있는 요청 된 URI에'$ _GET [ 'param']'으로 접근 할 수 있습니다. 참고 : 특정 설정에서'RewriteBase /'는 문제를 일으킬 수 있습니다. 그렇다면 파운드 기호로 주석 처리하십시오. – webbiedave

+0

정확히 내가 무엇을 찾고 있었습니까. 감사! – pixel

2

,

+1

정말 아파치 워드 프로세서가 마음에 들지 않았습니다 ... 특정 것을 찾고있을 때 너무 어리 석음 – SeanJA

2

당신은 이미지가 필요합니다 및 기타 파일이 무엇을 표시됩니다 index.php. 파일 이름, JPEG 동일 JPG없는 경우

RewriteEngine On 

은 ... 인덱스에 "리디렉션"index.php를

RewriteRule ^(.*)$ index.php?q=$1 [QSA] 

에 필요한 Rewite 엔진

RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|css|js|pl|txt)$ 

을 켭니다. php. 사용 중

:

q 당신이 모든에 변수를 분할하는 경우 당신에게 /articles/1987/12/20/Répa's birthday/

를 줄 당신은 당신이 원하는있어 정확히 어떤

list($type, $date_year, $date_month, $date_day, $title) = split('[/-]', $_GET['q']); 

와 슬래시 것 PHP $_GET으로 .

+0

재 작성 조건이 약간 과장되어 파일 확장명없이 파일을 저장하면 결과가 손상 될 수 있습니다. – SeanJA

관련 문제