2009-08-16 3 views
2

사용자가 내 사이트에 등록 할 때마다 등록 된 "사용자 이름"으로 하위 디렉토리를 갖기를 바랍니다. 모든 사용자 하위 디렉토리에는 동일한 "index.php"파일이있어 어떤 작업을 수행합니다. 예를 들어htaccess 및 PHP를 사용하여 동적 하위 디렉토리 만들기

: "/ 사용자/사용자 이름 1 /"와 "/ 사용자/사용자 이름 2 /"어떤 하나가 간단한에 갈 것 하위 디렉토리에 액세스하려는 경우

: "을 www.example.com/users/

쉽고 지저분한 솔루션은 모든 사용자에 대해 하위 디렉토리를 만들고 모든 디렉토리에 동일한 "index.php"파일을 배치하는 것입니다. 하지만 제게 이것은 내 서버 공간을 군집시키고 내 디렉토리를 크게 만들 것입니다.

모든 것이 .htaccess를 사용하여 수행 할 수 있는지 알고 싶었습니까? "index.php"파일 하나와 ".htaccess"파일 하나를 만들고 "/ users /"디렉토리에 둘 수 있습니까? 내 .htaccess 파일에 놓아야 할 실제 코드는 무엇이겠습니까 ??

더 좋은 방법이 있다면 알려 주시기 바랍니다. 내 작업 환경으로 Apache와 PHP를 사용하고 있습니다.

고맙습니다.

답변

0

가상으로 설정하십시오. 하위 디렉토리가 없으므로 mod_rewrite을 사용하여 시뮬레이션 할 수 있습니다.

mod_rewrite를 사용하면/users/username1을 /users.php?user=username1로 지정할 수 있습니다. 클라이언트를 위해 모든 것이 투명합니다. 실제로 일어나는 일을 눈치 채지 못할 것입니다.

6

음, 예를 들어,이 같은 일 htaccess로 함께 모든 것을 할 수 있습니다 :

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

그것은 무엇을 : 재 작성 엔진에

  • 스위치
  • 검사 요청 된 파일이 존재하는 경우
  • 요청 된 디렉토리가 존재하는지 확인하십시오.
  • 그렇지 않으면 요청을 기본 index.ph로 리디렉션합니다. 당신은 그런 yourdomain.com/users/ivan/로 URL을 입력하면 페이지

는 기본적으로 그게 당신이로 리디렉션됩니다 요청, 의미

index.php?url=/users/ivan 

다음 $ _GET [ 'URL']에 index.php를 만들고 조각으로 나눕니다.

이것은 단지 이고, 다른 mod_rewrite 메소드가 있습니다. 이 같은 것을 사용하여

0

:

RewriteEngine On 
RewriteRule ^([\-_0-9A-Za-z]+)$ index.php?a=$1 [L] 
You can customize RewriteRule as much as you want. 

당신은 기본적으로 원하는 디렉토리를 입력 할 수 있으며, 그것은 당신의 index.php 페이지로 리디렉션됩니다.기존 디렉토리가 리디렉션되지 않습니다 있는지 확인하려면

, 이렇게 :

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([\-_0-9A-Za-z]+)$ index.php?a=$1 [L] 

당신이 범위를 제한하려면, 그래서 단지 user/의 하위 디렉토리 (스택 오버플 유사) 리디렉션됩니다,

: 개별 파일이 모든 사용자의 요청이 실제의 index.php 페이지에서 분리해서 처리해야 할 경우, 마지막으로

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^user/([\-_0-9A-Za-z]+)$ index.php?a=$1 [L] 

그리고 : 단순히 규칙의 시작 '사용자'에 추가

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^user/([\-_0-9A-Za-z]+)$ users.php?a=$1 [L] 

이것은 CSS 파일을 배포하는 데 사용하는 것과 매우 유사한 설정입니다.

참고 : 디렉토리는 $_GET['a']

입니다.
관련 문제