2011-12-05 4 views
1

동일한 파일에 PHP와 HTML이 일부 있는데 URL을 해당 페이지의 이름으로 표시하는 방법을 정확하게 모르겠습니다.PHP 스크립트 내에서 URL 모양을 변경하는 방법

다음은 내가하고 싶은 예제입니다. 일부 페이지 id = 1을 말하면 해당 페이지의 제목은 HelloWorld입니다.

대신 site.com/page.php?id=1

나는 URL이 site.com/HelloWorld

로 표시 할하지만 난 데 문제는 난 단지 내가 ID로 타이틀을 조회 한 후 해당 페이지 내에서 페이지의 제목을 알 수 있다는 것입니다.

내가 설명한 설정을 고려할 때 URL을 페이지의 이름으로 표시 할 수있는 방법이 있습니까? 또한 누군가가 id 대신 페이지의 이름과 함께 더 나은 URL을 사용하여 해당 페이지에 링크하는 경우 여전히 ID를 얻는 방법이 있습니까? 그로 인해 나머지 페이지 내용은 유지됩니까?

감사합니다.

+0

많은 프레임 워크와 CMS를 통해 이러한 작업이 어떻게 이루어 졌는지 확인할 수 있습니다 (Drupal, CakePHP, RoR, Symfony 등). – webbiedave

+0

글쎄, 당신은 id에 의해 pageName을 쿼리하고 url에서 pageName을 원해야합니까? 나는 당신이 올바른 페이지를 얻지 못할 것이므로 이것은 불가능하다고 생각합니다. 그래서 거기에 (site.com/1/Helloworld와 같은) pageId를 추가하거나 스크립트를 변경하여 이름을 사용하여 페이지를 가져올 수 있습니다. – Sgoettschkes

+0

@Boo 아아 당신이 바로 여기 트랙에있을 수도 있습니다! 내가 제안한대로이 URL을 어떻게 작성합니까? ID와 이름을 얻은 다음 스크립트에서 301을 수행합니까? – GeekedOut

답변

1

필요한 작업은 .htaccess 작업 방법에 대해 자세히 알아 보는 것입니다. 여기

날 시작있어 좋은 링크입니다 :

.htaccess tricks and tips

업데이트 :

여기

모든 요청은 index.php를 보내 많은 프레임 워크에서 매우 일반적인 관행이며,에서 PHP를 사용하여 정확한 페이지를 제공하십시오 :

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ http://www.site.com/index.php [L,R=301] 
</IfModule> 
+0

감사합니다 ... 나는 이것이 어떻게 여전히 작동 할 것인지 정확히 알지 못합니다. 그래서 ID를 얻은 다음 리디렉션할까요? 나는 두 가지 조건이있다. 1) 들어오는 ID를 얻고 그 이름으로 쿼리를 작성한 다음 예쁜 URL을 만들려고한다.그리고 URL이 꽤 상반되는 상황과 어느 id에 속하는지 동적으로 파악해야합니다. – GeekedOut

+0

이 형식을 사용하면 다음과 같이 생각할 수 있습니다. 'http : // site.com/1/HelloWorld' 여기서 1은 ID이고, url을 구문 분석하여 ID를 추출합니다. – Ibu

1

사실 이것은 HTTP 서버 소프트웨어 (종종 아파치)의 기능입니다. n ot PHP.

"친숙한"URL이있는 사이트에서 보이는 것은 친숙한 이름이 정규 표현식에 캡처되어 PHP로 전달된다는 것입니다. 예를 들어

:

GET /HelloWorld 

이 웹 서버로 전송됩니다 .. 웹 서버는 PHP 스크립트는 항상 매개 변수로 친숙한 이름을 받게됩니다 이런 식으로 그것을

RewriteCond ^(A REGULAR EXPRESSION TO CAPTURE YOUR FRIENDLY NAME)$ 
RewriteRule page.php?id=(EXPRESSION FROM ABOVE) 

을 구문 분석합니다.

Apache 용 "mod_write"를 살펴보십시오. 루트 디렉토리에서 ".htaccess"파일을 사용하기위한 규칙을 자주 만들 수 있습니다.

+1

고마워, 내가 가진 어려움은 그 이름이 무엇인지 알지 못한다. 그들은 하드 코딩되지 않으며 주로 사용자가 구성합니다. 내 일의 정규 표현 방식이 여전히 작동할까요? – GeekedOut

+0

정규식은 URL의 일부만 캡처합니다. 예를 들어 /userpages/(.*)/를 수행하면/userpages/frank/또는/userpages/justin /을 캡처하여 $ _POST [ 'id'] = 'frank'또는 $ _POST [ ' id '] ='justin '. 할 일을 선택할 수 있습니다 (예 : 페이지가없는 경우 404를 다시 보냄). – funwhilelost

관련 문제