์จ๋ผ์ธ ๊ฐ์
>PHP - ์ค๊ธ
๐ PHP ์ค๊ธ - 7์ฃผ์ฐจ: MVC ํจํด์ ์ดํด ๋ฐ ์ ์ฉ- 03 URL ๋ผ์ฐํ ๊ธฐ์ด
				์ฃผ์ ํ๋ก๊ทธ๋จ ์คํ
- ํ์ : 10.0
 - ๋ผ์ด์ ์ค: free
 - ์ด์์ฒด์ :
 - ํ์ผ ํฌ๊ธฐ: 0
 
ํผ๋๋ฐฑ ๋ฐ ๋ค์ด๋ก๋
- ์ฌ์ฉ์ ํ์ : 10.0
 - ๋ค์ด๋ก๋ ์: 1
 - ์กฐํ์: 54
 
์ ์กฐ์ฌ ๋ฐ ๋ฑ๋ก ์ ๋ณด
- ์ ์์ฌ: LUZENSOFT
 - ๋ฑ๋ก์ผ: 2025-08-11 13:09:08
 
- ์ค๋ช
๐ PHP ์ค๊ธ - 7์ฃผ์ฐจ: MVC ํจํด์ ์ดํด ๋ฐ ์ ์ฉ- 03 URL ๋ผ์ฐํ ๊ธฐ์ด
#URL ๋ผ์ฐํ ์ด๋?
#์น ๊ฐ๋ฐ์์ #URL ๋ผ์ฐํ ์ ์ฌ์ฉ์๊ฐ ํน์  #URL์ ์์ฒญํ์ ๋, ํด๋น #์์ฒญ์ ์ด๋ค #์ปจํธ๋กค๋ฌ ๋๋ #ํจ์๋ก ์ฐ๊ฒฐํ ์ง ๊ฒฐ์ ํ๋ ๊ณผ์ ์ ๋๋ค. ์ด๋ #MVC(#Model-View-Controller) #ํจํด์์ #์์ฒญ์ ์ฒ๋ฆฌํ๋ ํต์ฌ์ ์ธ ๋ถ๋ถ์ด๋ฉฐ, #์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
#๊ธฐ๋ณธ์ ์ธ ๋ผ์ฐํ ์๋ฆฌ
๊ฐ์ฅ ๊ฐ๋จํ ํํ์ ๋ผ์ฐํ
์ ๋ค์ด์ค๋ ๋ชจ๋  #URL #์์ฒญ์ ํ๋์ #PHP #ํ์ผ(์: index.php)๋ก ์ง์ค์ํค๋ ๊ฒ์
๋๋ค. ์ด ํ์ผ์ **"ํ๋ก ํธ ์ปจํธ๋กค๋ฌ(Front Controller)"**๋ผ๊ณ  ๋ถ๋ฆ
๋๋ค. ์ด ํ์ผ์ ์์ฒญ๋ #URL์ ๋ถ์ํ์ฌ ์ ์ ํ #๋ก์ง์ ์คํํฉ๋๋ค.
#๋ผ์ฐํ ๊ท์น ๋ง๋ค๊ธฐ
์ฐ๋ฆฌ๋ #URL์ ๋ถํ ํ์ฌ #๋ผ์ฐํ
 #๊ท์น์ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, /products/123์ด๋ผ๋ #URL์ด ๋ค์ด์๋ค๊ณ  ๊ฐ์ ํด ๋ด
์๋ค. ์ด #URL์ ๋ค์๊ณผ ๊ฐ์ด ํด์๋  ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ๋ถ๋ถ (
/products): #์ปจํธ๋กค๋ฌ ๋๋ #๋ชจ๋์ ๋ํ๋ ๋๋ค.๋ ๋ฒ์งธ ๋ถ๋ถ (
/123): #๋์(#Action) ๋๋ #๋งค๊ฐ๋ณ์๋ฅผ ๋ํ๋ ๋๋ค.
์ด๋ฅผ ํตํด products #์ปจํธ๋กค๋ฌ์ show #๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , 123์ #๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ๋๋ก ๋ง๋ค ์ ์์ต๋๋ค.
#URL ๋ผ์ฐํ ๊ตฌํ ์์ 
๊ฐ๋จํ #URL ๋ผ์ฐํ
์ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค. ๋จผ์  .htaccess ํ์ผ์ ์ฌ์ฉํ์ฌ ๋ชจ๋  #์์ฒญ์ index.php๋ก ๋ณด๋ด๋๋ก ์ค์ ํฉ๋๋ค.
.htaccess ํ์ผ
Apache
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
์ ์ฝ๋๋ ์ค์  ์กด์ฌํ๋ #ํ์ผ์ด๋ #๋๋ ํฐ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ชจ๋  #์์ฒญ์ index.php๋ก ์ ๋ฌํฉ๋๋ค.
index.php ํ์ผ
PHP
<?php
// ์์ฒญ๋ URL์ ๊ฐ์ ธ์ต๋๋ค.
$request_uri = $_SERVER['REQUEST_URI'];
// URL์ / ๊ธฐ์ค์ผ๋ก ๋ถํ ํฉ๋๋ค.
$uri_segments = explode('/', trim($request_uri, '/'));
// ๋ผ์ฐํ
 ๋ก์ง ์์
$controller_name = 'home';
$action_name = 'index';
$params = [];
if (!empty($uri_segments[0])) {
    $controller_name = $uri_segments[0];
}
if (!empty($uri_segments[1])) {
    $action_name = $uri_segments[1];
}
if (count($uri_segments) > 2) {
    $params = array_slice($uri_segments, 2);
}
// ์์ ์ฉ ์ปจํธ๋กค๋ฌ ํธ์ถ
$controller_class = ucfirst($controller_name) . 'Controller';
$controller_file = 'controllers/' . $controller_class . '.php';
if (file_exists($controller_file)) {
    require_once $controller_file;
    $controller = new $controller_class();
    if (method_exists($controller, $action_name)) {
        call_user_func_array([$controller, $action_name], $params);
    } else {
        echo "404 Not Found: Action '{$action_name}' not found.";
    }
} else {
    echo "404 Not Found: Controller '{$controller_class}' not found.";
}
?>
์ ์์ ๋ #URL์ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ #์ปจํธ๋กค๋ฌ ์ด๋ฆ์ผ๋ก, ๋ ๋ฒ์งธ ๋ถ๋ถ์ #๋ฉ์๋ ์ด๋ฆ์ผ๋ก ๋งคํํ๋ ๊ฐ๋จํ #๋ผ์ฐํ #๋ก์ง์ ๋ณด์ฌ์ค๋๋ค.
#์ ๋ฆฌ
#URL ๋ผ์ฐํ ์ #MVC #ํจํด์ ์ค์ํ ์์๋ก์, #URL๊ณผ #์ ํ๋ฆฌ์ผ์ด์  #๋ก์ง์ ๋ถ๋ฆฌํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด #์ฝ๋์ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ํฌ๊ฒ ํฅ์๋ฉ๋๋ค. ์ด ์์ ๋ฅผ ํตํด ๊ธฐ๋ณธ์ ์ธ #๋ผ์ฐํ ์ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ๋ ๋ณต์กํ #ํ๋ ์์ํฌ์ ๋ผ์ฐํ ์์คํ ์ ๋ํ ๊ธฐ๋ฐ์ ๋ค์ง ์ ์์ต๋๋ค.
๋ธ๋ก๊ทธKT๊ณ ์ , ์ผํ/์ง๋ ๋ง์ผํ KT์ ๋, ๊ฒ์/์ฑํ๋ ์ด์ด ๊ณ ์ IP, 24์๊ฐ์๋ด ๋๋๊ตฌ๋งค ์ ํ ์ธํํ ์ ๊ณต!
https://xn--299ao67b9qbmsf04c.net/