목차
현상
워드프레스로 사이트 설정후 메인 TOP 페이지는 표시되는데, TOP 페이지 이 외 다른 페이지에 액세스하면 404에러가 나오는 현상이 발생되었습니다. 구글에 검색해도 잘 나와 있지도 않고 대처법도 좀 처럼 찾을 수 없었습니다. 해결 방법을 발견해서 그 순서와 내용을 공유합니다.
이 해결 방법은 「톱 페이지 이외 표시되지 않음」현상 외, 「특정의 페이지가 표시되지 않음」이라는 것에도 해당할 것 같습니다.
결론
.htaccess가 무효와 되어 있었습니다.
실행 환경
- CentOS 8
- Apache
- php 8.2
- WordPress 6.3
해결 방법
해결방법 1 :
「고유 링크 설정」에서 그대로 갱신
제가 여러가지 찾아 본가운데 간단히 해결되었다는 내용이 있어 따라해 보았습니다.
설정해야 할 고유 링크 설정이 반영되지 않는 경우가 있다고 합니다. 그래서 설정을 다시 해 봅니다.
방법은 WordPress의 관리 화면에서 “설정> 고유 링크 설정”을 클릭하고 그대로 “변경 저장”을 클릭하면됩니다.
저는 반복해서 해봤지만 별 효과는 없었습니다.
해결 방법2 :
「.htaccess」를 확인
1. “.htaccess”가 활성화되어 있는지 확인
“.htaccess”의 내용을 설정이 잘못되어서 표시가 안되는 경우도 있지만 제 경우에는 파일 자체가 유효화 되어 있지 않았던 것이 원인이었습니다.
아무리 파일을 제대로 설정한들 파일을 읽어 주지 않으면 에러가 나는게 당연했습니다.
vi를 이용해 파일을 편집합니다. 참조 링크: ( ubuntu20-htaccess-사용가능-수정하기-apache2 )
vi /etc/httpd/conf/httpd.conf
내용은 여러가지 써 있습니다만, 편집할 부분은 <Directory ※></Directory >의 세그먼트(segment)로 정의되어 있는 「AllowOverride」입니다. 「.htaccess」가 무효인 경우는, 「AllowOverride None」이 되어 있었습니다.
이것을 21행의 「AllowOverride All」 로 변경합니다.
※ 각 계층마다(“/”,”/var/www”,”/var/www/html”)에 설정이 있었는데, 저의 경우는 WordPress 관련의 파일 및 「.htaccess」를 두고 있는 디렉토리는 ‘/var/www/html’이였고 <Directory “/var/www/html”></Directory>의 세그먼트를 수정했습니다.
<Directory "/var/www/html"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # ⇒ 이부분을「AllowOverride ALL」로 변경 # # Controls who can get stuff from this server. # Require all granted </Directory>
2. 「.htaccess」작성후 확인
「.htaccess」을 작성후 , 이하의 내용을 붙여넣기했습니다.
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
정리
「.htaccess」추가와 httpd.conf 파일 수정후 문제없이 화면 표시 되었습니다.
감사합니다.