2010-12-15 5 views
1

가져 오기 VAR로 PHP 스크립트에 꽤 URL을 변환 I는 다음과 같이 URL을 사용하려면 :htaccess로 - 조용히 내가 PHP를 사용하고

http://www.example.com/username, 

대신을이 같은 쿼리 문자열을 사용하여 :

profile.php?u=username 

.htaccess 파일을 어떻게 설정합니까? 이 같은

답변

3

뭔가 :

http://www.example.com/User123 

하는 것이 될 것입니다 : 이것은 그래서이 http://www.example.com/profile.php

user라는 GET 변수로 도메인 이름 뒤에 아무것도 전달합니다

RewriteCond %{REQUEST_FILENAME} !profile.php 
RewriteRule ^(.*)$ /profile.php?user=$1 [L] 

:

http://www.example.com/profile.php?user=User123 

이것은 조용히 발생하므로 서버에 URL이 보이지 않을 때 profile.php URL이 표시되지만 브라우저에 여전히 "pretty"example.com/User123 버전이 표시됩니다. 당신은 무슨 일이 일어나고 있는지에 대한보다 철저한 설명을 요구하기 때문에


는 여기있다 :

RewriteRule 조금 if 문 같다. 기본적으로 "요청이이 패턴과 일치하면 요청을 다른 파일로 리디렉션합니다."

우리에 대해 일치하는 패턴은 다음과 같이 분해 ^(.*)$입니다

:

  • ^

    이 수에 일치 "문자열의 처음에 일치하는
  • .* 수단을 찾고 시작"을 의미 어느 캐릭터 (*)는 (.)
  • $ 수단 "문자열의 끝에 일치 멈춘다.
당신이 함께 이들을 결합하면

, 그것은 기본적으로 "모든 요청을 일치합니다."하는 금액 그들이 변수에 둘러싸 규칙의 일부를 일치 아무것도 저장하는 mod_rewrite를 알려줍니다 .* 주위

괄호. 변수가 저장되는 변수는 $1입니다 (여러 세트의 괄호가있는 경우 $2, $3 등으로 저장됩니다).

$1 변수는 RewriteRule의 마지막 부분에 지정된 새 경로를 정의하는 데 사용됩니다.

RewriteCondRewriteRule 주위에 다른 if 문을 던지는 것과 같습니다. "이 조건이 참이면 아래의 RewriteRule 만 실행하십시오.profile.php "귀하의 경우에는

가한다 RewriteCond는 파일이 URL에 요청되는 경우에만이 규칙을 실행에 말한다 (%{REQUEST_FILENAME}) 아니다" "이것의 의미는

그 요청" profile.php "는 정상적으로 처리되지만 다른 요청은 profile.php를 가리 키도록 리디렉션됩니다.

끝에있는 [L]은"이 뒤에 어떤 RewriteRules도 실행하지 마십시오 "라는 의미입니다 .L은 "마지막"

진흙 투성이입니까?

+0

도움을 주셔서 감사합니다.하지만 여전히 스크립트 이름 만 제공하고 있습니다. 예 : 나에게주는 동일한 코드 : 예 ([user] => profile.php) 하지만 위의 http://www.example.com/User123에서 언급 한 동일한 URL을 원합니다. – Neelesh

+0

@Neelesh : '[user] => profile 만 제공합니다. 'example.com/profile.php'로 이동했다면 'php'를 입력하십시오. 'example.com/User123'에 가면'[user] => User123'을 주어야합니다. – AgentConundrum

+0

http : // localhost : 81/test/neelesh처럼 같은 코드를 사용했습니다.이 코드는 나에게 profile.php를 제공합니다. Array ([user] => profile.php) In profile.php Neelesh

-1
RewriteEngine On 
RewriteRule http://www.example.com/(.*) profile.php?u=$1 
+0

미안하지만 ... 도와 주셔서 감사합니다 ... – Neelesh

관련 문제