2014-10-07 2 views
0

MySQL 데이터베이스에 저장되어있는 엄청난 양의 콘텐츠가 내 앱에 유용합니다. 이 정보를 온라인으로 제공하여 비 앱 사용자를위한 콘텐츠를 제공하고 웹 사이트 순위를 높이고 싶습니다.정적 페이지 생성 - URL 요청 이해

응용 프로그램의 백엔드는 PHP/MySQL에서 실행됩니다. 따라서 PHP를 사용하여이 페이지를 생성하고 싶습니다 (올바른 방법입니까?). PHP가 url의 구조를 취할 것 같아요. 예를 들어 www.xxxx.com/viewer/**venue**/**id** ** **의 부분은 가변적입니다. PHP를 이용하여 요청을 어떻게 처리 할 수 ​​있습니까?

+1

URL 다시 쓰기; [PHP로 URL 재 작성] (http://stackoverflow.com/questions/16388959/url-rewriting-with-php) –

답변

1

아마 가장 효율적이고 가장 효율적인 방법은 Apache 내에서 URL 재 작성을 사용하는 것입니다. 루트 폴더에 .htaccess 파일에 다음 코드를 추가 (또는 존재하지 않는 경우 새로 생성) :

RewriteEngine On 
RewriteRule ^/viewer/([^/]+)/([^/]+)/?$ viewer.php?venue=$1&id=$2 [L] 

을 이제 루트 내부 viewer.php 파일을 만듭니다. 다음과 같이 다음 $_GET 슈퍼 글로벌의 일환으로 변수에 액세스 할 수 있습니다

$venue = $_GET['venue']; 
$id = $_GET['id']; 

코드에서 주사를 SQL, 그에 따라 이러한 입력을 소독해야 함을 알려드립니다.

+0

좋아요! Apache mod를 현재 서버에 적용해도 오래된 페이지 (예 : 이전 index.php 등)가 계속 제공되거나 모든 요청이 지금 viewer.php를 통해 진행됩니까? –

+0

아니요, RewriteRule은 패턴과 일치하는 모든 URL (예 :/viewer /() /()) 만 타겟팅합니다. – BenM

+0

마지막 질문 하나가 검색 엔진에서 페이지를 크롤링 할 수있게합니까? –

0

웹 서버에 따라 다릅니다.

당신은 Nginx와 함께 PHP5-FPM을 사용하는 경우 :

location /viewer { 
    fastcgi_pass unix:/var/run/php5-fpm.sock; 
    fastcgi_param SCRIPT_FILENAME /path/to/viewer.php; 
    include fastcgi_params; 
} 

을 아마 할 것입니다. 그런 다음 PHP에서/viewer 뒤에 $ _SERVER [ 'REQUEST_URI'] 경로를 파기하고이를 기반으로 논리를 실행해야합니다.

예 : 당신은/뷰어/(장소 및 ID) 후 모든 값의 배열을 볼 수

<? 
$parts = explode("/", $_SERVER['REQUEST_URI']); 
$i=0; 
while($parts[$i] != 'viewer'){ 
    unset($parts[$i]); 
    $i++; 
} 
if($parts[$i] == 'viewer') unset($parts[$i]); 
$parts = array_values($parts); 
var_dump($parts); 
?> 

.