2012-10-19 3 views
0

URL 재 작성이 어떻게 작동하는지 이해하려고합니다. 다음 링크가 있습니다.URL 다시 작성 쿼리 데이터베이스?

mysite.com/profile.php?id=23 

나는 위의 URL을 사용자 성 및 이름으로 다시 쓰고 싶습니다.

나는 그러나 당신이 URL이로 출력해야하는지에 대한 규칙을 지정 읽은에서
mysite.com/directory/liam-gallagher 

,하지만 어떻게 내 표는 각 사용자 이름을 가져올 쿼리합니까?

죄송합니다. 이해하기 어려운 경우 혼란스러워합니다. 같은

+0

ID 대신 이름 만 검색하면됩니다. 당신이 확신 할 수없는 것을 명확히 할 수 있습니까? –

+0

대신 이름을 검색하면 같은 이름의 사용자가 두 명인 경우 어떻게됩니까? – Liam

+0

@Liam 안된다! 각 사람마다 고유 한 URL 슬러그를 만들어야합니다! –

답변

6

당신은 잘못된 방향에서이 찾고있다. 그런 종류의 자동 URL 재 작성을 수행 할 수 없습니다. 가장 좋은 모든 URL 재 작성 통해를 만드는 것입니다 :

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 
</IfModule> 

과는 URL로 사용되는 DB의 사용자에 대한 특정 이름을 만듭니다. 누군가가 당신의 http://mysite.com/directory/liam-gallagher에 액세스 이제 때

+---------+----------+------+-----------+----------------+ 
| user_id | username | name | surname | url   | 
+---------+----------+------+-----------+----------------+ 
|  23 | liam  | Liam | Gallagher | liam-gallagher | 
+---------+----------+------+-----------+----------------+ 

, 당신은 마지막 항목을 읽고 데이터베이스에 user_id을 찾아 스크립트가 나머지를 할 수 있습니다.

다른 방법은 Pekka입니다. http://mysite.com/directory/23/liam-gallagher과 같은 URL을 작성하고 링크에서 ID를 읽으십시오. 그러나 나는 개인적으로 그러한 종류의 URL을 좋아하지 않습니다. 그들은 단지 내 생각에 빠른/게으른 해결 방법입니다.

0

뭔가 (단지 초안은 ... 자신의 필요에 적응) : 다음과 같이

RewriteEngine On 
RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+)/([-0-9a-zA-Z]+)/?$ /$1/$2.php?id=$3 [L] 
0

한 가지 방법 나는 작품을 사용했습니다.

다시 쓰기 규칙을 만듭니다. 룰에서 캡처 파라미터로서

mysite.com/profile.php?user=%1 

데 % 1 : 리디렉션

mysite.com/directory/(.*) 

.

그런 다음 프로필 페이지의 쿼리 매개 변수에서 사용자를 가져 와서 해당 사용자의 ID를 db에서 가져옵니다.

http://httpd.apache.org/docs/current/mod/mod_rewrite.html