nginx Rewriterule .php 생략하기
페이지 정보
작성자
DocsArchives
작성일
2025.09.09 17:18
본문
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가 순서대로 확인:-
/var/www/html/test(파일) -
/var/www/html/test/(디렉토리) -
/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