2012-06-24 2 views
0

에 이름은, http://www.myurl.com/usa/california/sanjose 같은 URL이 여기 http://www.myurl.com/c=1&st=3&area=14URL - 숫자 (아파치)

에 문제를 리디렉션 어디 URL 재 작성을 수행하는 모든 지역이 상태 우리가 http://www.myurl.com/c=1&st=3&area=14 같은 URL을 사용했습니다이 모든 시간이 가능 국가는 데이터베이스의 숫자로 표시됩니다. 위의 예에서 usa/california/sanjose가 c = 1 & st = 3 & area = 14로 리디렉션되는 경우 사용자가 usa/florida/tallahassee를 입력하면 c = 1 & st = 5 &으로 리디렉션되어야합니다. 면적 = 3. 번호는 국가, 주 및 도시에 따라 다릅니다.

이름에 따라 이름을 바꾸는 URL을 다시 쓸 수 있습니까? 아니면 PHP 파일이 숫자가 아닌 이름을 기반으로 데이터를 그릴 수 있도록 데이터베이스를 업데이트하고 모든 숫자를 이름으로 변경해야합니다.

답변

1
  1. 당신은 이름에 따라 다시 작성할 수 있지만,이 룰의 한 지옥이 될 것입니다 (그에 따라 모든 주 이름, 모든 국가 이름 및 모든 지역을 다시 작성해야합니다 - 기본적으로 모든 데이터베이스).

  2. 데이터베이스에도 국가 및 주 이름이 없습니까? 이름을 가져 와서 ID로 변환 한 다음 이전에했던 것처럼 ID로 작업하는 것이 좋습니다 (선호).

규칙 세트 매개 변수에 좋은 URL을 번역하기 :

RewriteEngine On 
RewriteRule ^([^/]+)/([^/]+)/([^/]+) /?country_name=$1&state_name=$2&area_name=$3 [L,QSA] 
RewriteRule ^([^/]+)/([^/]+) /?country_name=$1&state_name=$2 [L,QSA] 
RewriteRule ^([^/]+) /?country_name=$1 [L,QSA] 

첫 번째 규칙은 모든 된 threee PARAMS, 초 국가와 국가와 세 번째 다시 작성 - 당신도 (다른 파일이 없습니다 가리킬 수 있습니다 유일한 국가를 귀하의 일반 색인) 다음 매개 변수를 ID로 번역 후 - 원래 처리기를 포함

+0

결국, 우리는 그들의 번호에 해당하는 국가, 도시 및 지역 이름으로 DB를 업데이 트하기로 결정했습니다. 그런 다음 제안한 것과 비슷한 규칙을 사용하여 htaccess 파일을 작성했습니다. 이제는 모든 것이 잘 작동하는 것 같습니다. – Norman