url 주소에서 .php .html 등 확장자 제거하는 방법
아마존 AWS 서비스 중에 라이트세일에서 LAMP 인스턴스를 생성하여 웹사이트 하나를 만드는 중이다.
기본 개발 언어가 php인데 페이지를 만든 후 url 주소 테스트를 해보니 html파일과 php 파일 모두 url 경로에 포함되어 있어 간결함이 없어 보이고, 외부에 공유할 때 주소가 길어지는 부분도 있어도 제거하는 방법에 대해 기록해둔다.
.htaccess를 사용하여 .php 확장자를 URL에서 제거하는 방법
testsite.com/help주소에 접속하면 testsite.com/help.php 페이지가 로드되는데, 브라우저의 URL에는 testsite.com/help와 같이 php 확장자가 보이지 않게 하는 것이다.
1. php 파일 확장자 제거방법
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
2. html 파일 확장자 제거방법
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
3. url 끝에 슬러시(/)를 추가하고 싶을 경우
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
만약 리눅스 환경에서 .htaccess파일에 접근이 필요하다면, .htaccess 파일을 파일질라와 같은 FTP를 통해 다운받은 후 수정해서 업로드 한다. 만약, 블루호스트 등 호스팅 업체에서 cPanel을 지원하는 경우에서 cPanel 내의 File Manager를 통해 접속하여 파일을 수정/편집할 수 있다.
비트나미의 경우 기본적으로 보안 및 성능상의 이유로 .htaccess 파일을 비활성화 한다고한다. 좀 더 자세한 내용은 비트나미 기본 .Htaccess 파일 구성 이해 문서에서 확인할 수 있다. 보안 및 성능을 무시하고 사용하고 싶다면 아래와 같은 방법으로 해결할 수 있지만 권하지 않는다. /opt/bitnami/apache2/conf/bitnami/bitnami.conf
파일에 RewriteRule 등을 추가하는 것을 추천한다.
.htaccess 사용을 활성화하려면 bitnami.conf
파일 에서 AllowOverride All 로 설정해야 한다. /opt/bitnami/apache2/conf/bitnami/bitnami.conf
<VirtualHost _default_:80>
DocumentRoot "/opt/bitnami/apache2/htdocs"
<Directory "/opt/bitnami/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride All <---- 여기
<IfVersion < 2.3 >
Order allow,deny
Allow from all
</IfVersion>
<IfVersion >= 2.3 >
Require all granted
</IfVersion>
</Directory>
변경 사항을 적용한 후 Apache를 다시 시작한다.
[참고사이트]
- How to remove .html from URL?
- How to remove .php, .html, .htm extensions with .htaccess
- AWS Lightsail LAMP 모듈에서 .htaccess를 활성화하는 방법