2009-09-26 3 views
0

내 회원 중 한 명이 예를 들어 http://www.example.com/members/893674.php이라고합시다. 어떻게하면 사용자가 URL을 사용자 정의하도록 할 수 있습니까? 예 : http://www.example.com/myname어떻게 PHP로 URL을 다시 작성 하시겠습니까?

내 멤버가 자신 만의 맞춤 URL을 가지고있는 것으로 생각합니다. 내 파일을 재구성하여이 작업을 수행하는 더 좋은 방법이 있습니까?

+0

나중에 URL 스키마가 검색 엔진 친화적 인 것이므로 좋은 생각입니다. 예를 들어 누군가 'myname'에 대해 Google 검색을 수행하면 검색 스파이더가 URL을 검색하기 때문에 사이트의 사용자 페이지가 표시 될 가능성이 더 커집니다. – andho

+0

나는 이것을 예고하지 않았지만 url http://www.example.com/members/893674.php에서 893674.php는 사용자 myname에 대한 것이다. 그래서 각 사용자마다 893674.php와 같은 파일이 있습니까? – andho

답변

5

당신은 프런트 컨트롤러를 사용할 수 있습니다, 그것은 사용자 정의 URL을 만들기위한 일반적인 솔루션의 모든 언어뿐만 아니라 PHP에서 사용된다. http://www.oreillynet.com/pub/a/php/2004/07/08/front_controller.html

기본적으로 모든 URL에 대해 호출되는 index.php 파일을 만들면 해당 작업은 URL을 구문 분석하고 URL의 콘텐츠를 기반으로 실행할 코드를 결정합니다. 따라서 귀하의 사이트에 귀하의 URL은 http://www.example.com/index.php/myname 또는 http://www.example.com/index.php/about-us 또는 http://www.example.com/index.php/contact-us 등과 같이 표시됩니다. index.php가 모든 URL에 대해 호출됩니다. http://www.wil-linssen.com/expressionengine-removing-indexphp/

+1

그리고 모든 URL에 대해 index.php가 호출되면이를 사이트의 보안 검사를 단순화하는 단일 입력 지점이라고합니다. 또한 MVC 프레임 워크를 사용하는 것이 좋지만이 프레임 워크에 응용 프로그램을 포팅하는 것은 어려울 수 있습니다. – andho

1

새 파일을 생성하고 (htaccess로)로 이름을 변경하고 그것으로 (단지 예를 들어)이 아파치 명령을 넣어 :

당신은 mod_rewrite를를 사용하여 URL에서 index.php를 제거 할 수 있습니다 여기를 참조 :

Options +FollowSymLinks 
RewriteEngine on 
RewriteRule ^profile/([0-9]*)$ members.php?id=$1 
+0

나는이 대답이 자신의 요점을 다룰 때만 구현할 수있는 OP가 가장 쉽다고 생각한다. – andho

+0

http://www.example.com/profile/myname은 http : // www를 가리킨다. example.com/members.php?id=myname – andho

1

당신은 http://www.example.com/user.php?uname=myname 같은 것으로 http://www.example.com/myname에서 포인트 재 작성 규칙을 작성해야합니다. '.htaccess'에서

:

RewriteEngine on 
RewriteRule  ^/(.*)$  /user.php?uname=$1 
#    SourceURL TargetURL 

은 그럼 당신은 'uname' GET 변수에서 ' user.php'로드하는 사용자 정보를 만들 수 있습니다.

질문에서 볼 수 있듯이 이미 사용자 ID (예 : '893674.php')를 기반으로 한 사용자 페이지가 있으므로 리디렉션 할 수 있습니다.

하지만 리디렉션은 위치 표시 줄의 URL을 변경하므로 제안하지 않습니다.

다른 방법 (이미 '893674.php'인 경우)을 포함하는 것입니다.

가장 좋은 방법은 해당 페이지에서 사용자 정보 (또는 사용자가 사용하는 모든 정보)를 표시하는 것입니다. 예를 들어

:

<?phg 
vat $UName = $_GET['uname']; 
var $User = new User($UName); 

$User->showInfo(); 
?> 
2

는 index.php에 모든 것을 가리 키도록 다시 쓰기 규칙을 추가합니다. 그런 다음 index.php 내부에서 url을 구문 분석하고 myname을 가져옵니다. somekinda 테이블에서 myname에 대한 경로를 검색하고 해당 경로를 포함하십시오.

index.php :

$myname = $_SERVER['REQUEST_URI']; 
$myname = ltrim($myname, '/'); //strip leading slash if need be. 
$realpath = LookupNameToPath($myname); 

include($realpath); 
관련 문제