운영체제

nginx Rewriterule .php 생략하기

페이지 정보

작성자 DocsArchives
작성일 2025.09.09 17:18
분류 rhel
932 조회

본문

 Nginx 방식

Nginx에는 RewriteRule이 없고 try_files를 사용합니다.
예시:

server {
    listen 80;
    server_name example.com;
    root /var/www/html;


    index index.php index.html;


    location / {
        try_files $uri $uri/ $uri.php;
    }


    location ~ .php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;   # PHP-FPM 소켓 또는 127.0.0.1:9000
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
    }
}


동작 원리

  • /test 요청 → try_files가 순서대로 확인:

    1. /var/www/html/test (파일)

    2. /var/www/html/test/ (디렉토리)

    3. /var/www/html/test.php (php 파일)

  • 만약 test.php가 있으면 PHP-FPM으로 전달됨.

  • 따라서 주소창엔 .php 안 붙여도 됩니다.


PHP 전용 경로 제한 (보안)

보통 .php를 직접 노출하지 않고 싶다면 .php 요청을 막고 위 규칙만 허용하는 방법도 있습니다:


location ~ .php$ {
    return 404; # 직접 .php 호출 차단
}


캐싱 및 SEO 고려

  • .php 숨기면 URL이 "정적인 URL"처럼 보여서 SEO에도 이점이 있음.

  • 하지만 .php.php 없는 버전이 둘 다 접근 가능하다면 중복 콘텐츠가 됩니다.
    → 해결: .php 직접 접근 시 301 리다이렉트 처리.

 
location ~ .php$ {
    if ($request_uri ~ ^(.+).php$) {
        return 301 $1;   # .php 빼고 리다이렉트
    }
}


댓글 0
홈으로 전체메뉴
전체 검색
회원가입