React로 만들어진 프로젝트를 배포하면 웹팩으로 빌드하여 나온 결과물인 main.js를 사이트에서 보여주게 된다.
하지만 이 main.js를 부르는 곳은 "/" 주소 뿐, 만약 "/login"이라던가 "/user" 등의 경로가 붙으면 main.js를 보여주지 않는 현상이 발생한다.
이를 해결하기 위해, 서버 측에서 이 상황을 인식하고 main.js를 반환해줄 수 있도록 Rewrite 설정을 해줄 수 있다.
- Rewrite를 적용할 수 있는 범위
Server Config, Virtual Host, Directory, .htaccess
즉 필요한 곳에 사용하면 됨. 나는 VirtualHost 내에서 쓰면 될 것 같아서 여기에다 입력했다.
<VirtualHost *:80>
ServerName
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /
ProxyPassReverse /
ErrorLog "logs/error_log"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ main.js
</VirtualHost>
- RewriteEngine 엔진을 사용할지 여부를 설정
- RewriteCond 여기서 설정한 패턴과 일치하는 경우 다음에 오는 Rule을 실행
-d: 디렉토리
-f: 파일
-l: 심볼릭링크
- RewriteRule [inputURL] [returnURL] 실질적인 rewrite 룰을 적용
L: 뒷 구문 여부를 무시하고 그 줄에서 끝낸다
N: 새로운 룰이 시작된다
R: 뒷 주소로 넘긴다
NC: 대소문자 구별 X
QSA: Cond의 내용을 지난 결과에 덧붙인다
NE: Out될 값에 특수문자가 Hex로 포함돼있는 경우
- RewriteLog & RewriteLogLevel
해당 지시자는 설정하면 오류가 남. apache 최신 버전에서 사용되지 않도록 바뀌었다고 함.
Invalid command 'RewriteLogLevel', perhaps misspelled or defined by a module not included in the server configuration
근데 아무리 해봐도 원하는대로 적용이 잘 안되고 서버가 먹통이 되어버려서
일단 Rewrite를 적용하지 못한 채 다른 방법으로 운영하고 있다..
node.js에서 경로들 들어올 때 index.html 반환해주는 방법으로 넘겨주는 중
이거 붙잡고 있을 때가 아닌 것 같아서 관뒀지만 언젠가 다시 보고 적용하기 위해 글로 남겨둠 ㅠ ㅠ
참고링크
https://blog.munilive.com/posts/how-to-use-htaccess-rewrite-rule.html
https://cheershennah.tistory.com/157
'main > Server' 카테고리의 다른 글
[CentOS 7] pm2에서 React 무중단 실행하기 (0) | 2022.01.20 |
---|---|
[CentOS 7] Error: listen EADDRINUSE: address already in use 0.0.0.0:port (0) | 2022.01.20 |
[CentOS 7] Apache httpd.conf 파일 알고 쓰기 (0) | 2021.11.02 |
[CentOS 7] React build 파일 Node express에 배포하기 (0) | 2021.07.27 |
[CentOS 7] React start를 위한 Yarn 의존모듈 설치 (0) | 2021.07.26 |