2009-07-18 8 views
0

이 규칙을 사용하는 사이트를 볼 수 있습니다.동적 생성 URL에 htaccess를 사용하는 방법

hxxp : //www.twitter.com/golem

hxxp : 내 사이트에 그렇게하려고

//www.twitter.com/golem/following. "golem"은 동적이며 기본적으로 사용자 이름입니다.

그래서 hxxp : //www.mysite.com/golem은 골렘 페이지로 이동합니다.

그리고 hxxp : //www.mysite.com/golem/details.php는 골렘의 세부 정보 페이지로 이동합니다.

질문 : 항상 쿼리 문자열 내 모든 PHP 파일에 & _ 이름 = 골렘을 추가 있도록

  1. 가 어떻게 htaccess로해야합니까? 브라우저 주소 표시 줄에 표시하지 않고. 그래서 기본적으로 슬래시가있는 URL의 첫 번째 경로를 가져 와서 내가보고있는 PHP 페이지의 끝 부분에 쿼리로 추가해야합니다.

  2. hxxp : //www.mysite.com/golem/details.php는 실제로 hxxp : //www.mysite.com/details.php? user_name = golem에서 실제 위치에서 파일을 실행합니다. 경로에 "골렘"없음) 주소 표시 줄에 여전히 가짜 URL을 표시하는 동안. //www.mysite.com/golem/page.php 및 hxxp :

  3. 는 hxxp 같은 다른 URL에 대한 작동 확인 //www.mysite.com/golem/view.php 등 등

튜토리얼 등을 보았지만 답변을 찾을 수 없습니다. 어떤 도움을 주셔서 감사합니다!

+0

mod_rewrite를 살펴보십시오. – derobert

답변

1

아직 완료하지 않은 경우 mod_rewrite를 활성화하십시오. .htaccess에서 일부 RewriteRule을 추가해야합니다. 이 하나를 시도

RewriteRule ^([^/]+)/([^?]*)\??(.*)$ $2?$3&user_name=$1 [L] 

가 작동하지 않는 경우 :

이 시도

RewriteRule ^/([^/]+)/([^?]*)\??(.*)$ $2?$3&user_name=$1 [L] 

을하지만 상대가있다 : 당신이 고전 URL이있는 경우, 그들은에 의해 잡힐 것 이 규칙들. 사용자 이름을 스크립트 이름과 구별 할 수있는 방법이 있습니다. 사용자 이름에 점을 사용할 수 없다고 가정 해 보겠습니다. 그런 다음, 당신이 하나를 사용하여 규칙을 대체 할 것이다 :

RewriteRule ^([^/.]+)/([^?]*)\??(.*)$ $2?$3&user_name=$1 [L] 

는 (첫 번째 괄호에있는 점에 주목 -이 URL이 점을 포함하는 경우, 다음이 규칙과 일치하지 않습니다 말한다).

이제 매개 변수 앞에 점이 포함 된 모든 URL은 "일반"URL로 처리됩니다.

사용자 이름에 점이 포함될 수있는 경우 details.php가 PHP 스크립트 또는 사용자 이름의 이름이라고 어떻게 말할 수 있습니까? 이 경우 우리가 원하는 것만 일치하는 RewriteRules을 작성하는 것은 매우 어려워집니다. 그리고 그것들을 테스트하는 것은 매우 어렵습니다. 왜냐하면 많은 경우를 생각하기가 어렵 기 때문입니다.

+0

고맙습니다.작동하는 것처럼 보이지만 일부 WEIRD 이유로 더 이상 URL 매개 변수의 다른 부분을 읽을 수 없습니다. 나는 $ _REQUEST [ 'user_name']을 사용하여 사용자 이름을 얻을 수 있지만 URL이 hxxp : //www.mydomain.com/details.php? item_id = 23과 같은 경우 URL에서 item_id를 얻을 수 없습니다. 누구나 알 수 있습니까? –

+0

위의 규칙은 모든 URL을 캐치하고 "details.php"인 경우에도 첫 번째 부분을 사용자 이름으로 처리하기 때문입니다. 스크립트 이름에서 사용자 이름을 구별 할 수 있다면 (예를 들어 사용자 이름에 점을 포함 할 수없는 경우) 스크립트 이름없이 URL 만 잡을 수있는 규칙으로 대체해야합니다. 나는 이것을 반영하기 위해 나의 대답을 업데이트하고있다. – FWH

+0

감사합니다. FWH. 하지만 여전히 효과가없는 것 같습니다. URL에서 item_id에 대한 요청을했지만 나에게주지 않았습니다. 그러나 그것은 나에게 username을 준다. –

관련 문제