어떻게 할 수 www.mydomain.com/folder/?id=123 ---> www.mydomain.com/folder/xCkLbgGgePHP 동적 DB 페이지 재 작성 URL
내가 얻을 내 DB 쿼리 페이지를 원하는 트위터 등에서 본 것처럼 자신의 URL입니다.
어떻게 할 수 www.mydomain.com/folder/?id=123 ---> www.mydomain.com/folder/xCkLbgGgePHP 동적 DB 페이지 재 작성 URL
내가 얻을 내 DB 쿼리 페이지를 원하는 트위터 등에서 본 것처럼 자신의 URL입니다.
이것은 "슬러그"로 알려져 있습니다.이 단어는 인기가 있습니다. 어쨌든.
궁극적으로 당신이해야 할 일은 .htaccess 파일을 가지고 들어오는 모든 트래픽을 잡아 내고 서버 레벨에서 PHP를 사용하여 PHP에서 작동하도록 만들면 여전히? id = 123 논리가 그대로 유지되며, 하지만 클라이언트 측 '/ folder/FHJKD /'는 볼 수있는 결과가됩니다.
여기에 유사한 논리를 사용하는 .htaccess 파일의 예가 있습니다. (그 점에 대해서는 wordpress도 마찬가지입니다.) 이 수행 할 작업을
RewriteEngine On
#strips the www out of the domain if there
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
#applies logic that changes the domain from http://mydomain.com/post/my-article
#to resemble http://mydomain.com/?id=post/my-article
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?id=$1 [QSA,L]
는 장치에 논리를 가지고이에서 'ID'것이 예에서 변수를되는 index.php domain.com/ 후 모든 것을 받아 변수로 전달입니다 가장 적합한 귀하의 사이트가 필요합니다.
예, 이것은 지금
<?php
//the URL for the example here: http://mydomain.com/?id=post/my-article
if($_GET['id'])
{
$myParams = explode('/', $_GET['id']);
echo '<pre>';
print_r($myParams);
echo '</pre>';
}
?>
이의 논리가 훨씬 더 깊게 할 것이다 기본적인 수준에서 순수한 예이지만, 전반적으로 특히 내가 가정 데이터베이스, 당신 거 싶어 작업의 원인이
$ myParams가 PHP 또는 데이터베이스에 삽입 될 수있는 악의적 인 코드가 없는지 확인하십시오.Array(
[0] => post
[1] => my-article
)
가 작동하려면이
echo $myParams[0].'<br />';
최소한해야 할 것이다 또는 당신은이 원인처럼 할 수있는 :
print_r()
를 통해 위의 $myParams
의 출력은 것 대부분의 브라우저에서 최종본을 추가합니다./
<?php
//the URL for the example here: http://mydomain.com/?id=post/my-article
if($_GET['id'])
{
//breaks the variable apart, removes any empty array values and reorders the index
$myParams = array_values(array_filter(explode('/', $_GET['id'])));
if(count($myParams > 1)
{
$sql = "SELECT * FROM post_table WHERE slug = '".mysql_real_escape_string($myParams[1])."'";
$result = mysql_query($sql);
}
}
?>
이제이 예제는 매우 원시적 인 예제입니다. mysql 주입을 막기 위해 로직을 사용하고 싶다면 id = 123을 사용하여 기사를 끌어 올리는 것과 같은 쿼리를 적용하십시오.
다른 방법으로 완전히 다른 경로를 탐색하고 MVC (Model View Control)의 경이로움을 탐험 할 수도 있습니다. CodeIgniter와 같은 것은 시작하기에 좋은 간단한 MVC 프레임 워크입니다. 그러나 그것은 당신에게 달려 있습니다.
.htacess에서 RewriteEngine을 on으로 설정해야합니다.
그런 다음,이 작은 짐승의 일을하기 위해 몇 가지 정규식을 수행해야합니다. 가정합니다. id는 folder.php? id = 123입니다.
예컨대 폴더 편 :.?^RewriteRule의 폴더/([A-ZA-Z0-9 _-] +)/([0-9] +) HTML $ folder.php ID = $ 123
이 작업을 수행하는 것은 매우 복잡해 보입니다. 나는 사용자가 데이터베이스에 추가 할 페이지에서 사용해야합니다.이 기술에 대한 실제 예제가 있습니까? -이 문제를 설명하는 유일한 방법은 아파치 서버 설정을 변경해야합니다. – user1121487
네, 조금 복잡합니다. 그러나 당신이 원하는 것을 성취 할 수있는 유일한 방법. htaccess가 필요합니다. 그런 다음 모든 들어오는 요청은 index.php 뒤에 오는 모든 .com/뒤에 오는 $ _GET 매개 변수와 매우 유사한 변수로 처리됩니다. id = 123. 그것으로 당신은 기본적으로 동일한 논리가 데이터베이스에서 데이터를 가져 오는 것과 같은 방식으로 사이트를 구축합니다. 그 전에는 초기로드에서 조금씩 다르게 작동해야만합니다. – chris
불행히도 주변에는 아무 것도 없습니다. 그 중 하나의 예가 모든 사람이 평상시에 다른 필요를 보인 것처럼 보입니다. 나의 예제에서는 ID를 가변 배열을 사용하여 폭발시키기 때문에'$ myParams [0]'이 점프 포인트가됩니다. 이제 대부분의 사람들은 최소한이 방법으로 데이터베이스 테이블에 추가 열을 추가하여 많이 변경하지 않고 쉽게이 개념에 대한 내용을 준수 할 수 있습니다. 이제이 한 칼럼은 귀하의 URL에 슬러그 .com/my-article 부분이 될 것입니다. 칼럼은 "내 기사"를 저장하고 다른 DB를 가져 오는 것처럼 작업 할 것입니다. – chris