2013-06-18 2 views
2

내 문제 : .htacess 규칙을 작성하고 싶습니다. www.asdf.com/New-Yorkwww.asdf.com/city.php?city=New-York 뿐만 아니라 나는 내가 www.asdf.com/LAhtacess로 URL 재 작성

즉, 어떤 도움을 수행하는 방법에 꽤 혼란으로 표시 할 www.asdf.com/USAwww.asdf.com/state.php?country=LA로 표시 할 같은 www.asdf.com/country.php?country=USA 다른 페이지가 그와 함께, 이 문제를 해결해야합니다.

답변

0

완전히 다른 3 가지 URL에 대해 동일한 URL을 사용하려면 PHP 페이지를 사용하여 '어떤 종류의'것이 '있는지 검색하고 요청을 특정 페이지로'라우팅 '해야합니다.

다음 (테스트되지 않은) 두 가지 규칙은 위에 나열된 모든 '못생긴'URL을 멋진 URL로 리디렉션하고 요청을 위해 사용해야하는 페이지를 결정하는 PHP 페이지에 대한 멋진 URL을 리디렉션합니다. %2은 RewriteCondition의 두 번째 캡처 그룹에 대한 역 참조입니다. 후행 ?은 쿼리 문자열을 지 웁니다.

<?php 
    $url = $_GET['url']; 

    if(isCity($url)) { 
    $city = $url; 
    include('city.php'); 
    exit(); 
    } elseif(isCountry($url)) { 
    $country = $url; 
    include('country.php'); 
    exit(); 
    } 
    #etc.... 
?> 

더 논리적이 다른 것들, 예를 들어, 서로 다른 공상의 URL의를 사용하는 것입니다 : 같은 것을 가진 파일 myRouter.php

RewriteCond %{QUERY_STRING} (city|country)=([^&]*) 
RewriteRule (country\.php|city\.php|state\.php) %2? [R=301,L] 

RewriteRule ^([^/]*)$ myRouter.php?url=$1 [END] 

/country/USAcountry.php?country=USA이고, /state/LAstate.php?country=LA이고 /city/New-Yorkcity.php?city=New-York입니다.

쉽게 다음 (안된) htaccess로 함께 할 더 논리적 URL을 생성 할 수 있습니다

RewriteCond %{QUERY_STRING} (city|state|country)=([^&]*) 
RewriteRule ^(country|city|state)\.php$ $1/%2? [R=301,L] 

RewriteRule ^(country|city|state)/(.*)$ $1.php?$1=$2 [END]