워드프레스 주소변경했을 때 접속이 안되는 문제

기본 환경은 개인 서버에 직접 워드프레스를 설치한 경우입니다. 하지만 웹호스팅을 하는 경우에도 기본 사항은 도움을 얻을 수 있을 겁니다. 웹호스팅을 하는 환경이라면 다음 사이트를 참고하세요. 여기

저도 위 사이트를 참고해서 해결했습니다.


문제가 되는 시나리오는 이렇습니다. 

워드프레스를 설치하고 사이트에 접속할 때 보통 사이트명으로 접속하지만 /var/www/http/wordpress 가 워드프레스의 홈 디렉토리라면 워드프레스 페이지에 접속하기 위해서는 사이트주소/wordpress 라고 주소를 입력해야 접속됩니다. 뒤에 wordpress를 쓰지않고 사이트 주소로 워드프레스 페이지로 바로 접속하기 위해서 가상호스트를 설정할 겁니다. 그러면 사이트주소를 입력하면 바로 /var/www/http/wordpress 가 홈디렉토리가 되도록 설정할 수 있습니다.



가상호스트 주소를 설정하는 방법은 

$vi /etc/httpd/conf/httpd.conf

에서 다음과 같은 내용을 추가해 줍니다.

<virtualHost *:80>

    serverName yoursite.com

    serverAlias yoursite.com

    documentRoot "/var/www/html/wordpress/"

</VirtualHost>

이렇게 설정하면 yoursite.com는 /var/www/html/wordpress로 해석됩니다.

여기까지는 순조롭습니다. 또한 기본 페이지까지도 접속이 잘 될겁니다. 하지만 로그인이나 다른 링크를 누르면 /wordpress/xxxx.php 페이지가 없다고 나올겁니다.

왜냐면 워드프레스는 워드프레스가 설치된 디렉토리인 yoursite.com/wordpress에 있는 페이지를 열려고 하지만 앞에서 설정한 가상호트 때문에 주소가 꼬이게 됩니다. 바로 /var/www/html/wordpress/worpress/xxx.php로 접속이 되는 거죠.


따라서 위와 같이 가상호트를 설정했다면 워드프레스가 인식하고 있는 홈디렉토리의 위치를 yoursite.com으로 바꿔야합니다. 이 내용은 DB에 저장된 내용입니다. 따라서 이 작업은 웹 호스팅업체에서 제공하는 DB에 직접 접속해도 되고 직접 개인 서버를 운용하신다면 myphpAdmin같은 DB접속 툴에 접속해서 변경해야 합니다.

여기에서는 직접 쉘에서 바꾸겠습니다. 그냥 따라하시면 됩니다.

우선 자신이 워드프레스를 설치했을 때 만든 DB의 이름을 알아야 합니다. 여기에서는 worpress라고 하겠습니다.

mysql DB에 접속합니다.

$mysql -u root -p

Enter password: 패스워드 입력

...

Mysql DB>show databases;

+--------------------+

| Database               |

+--------------------+

| information_schema |

| GameDb                |

| memoryNow           |

| my_wiki                 |

| mysql                    |

| performance_schema|

| wordpress              |

+--------------------+

7 row in set (0.00 sec)

Mysql DB>use wordpress;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed

MariaDB [wordpress]> select * from wp_options where option_name="siteurl" or option_name="home";

+-----------+-------------+-----------------------------------+----------------+

| option_id | option_name | option_value                       |      autoload   |

+-----------+-------------+-----------------------------------+----------------+

|            2 | home         | http://yoursite.com/wordpress  | yes               |

|            1 | siteurl        | http://yoursite.com/wordpress   | yes              |

+-----------+-------------+-----------------------------------+-----------------+

2 rows in set (0.00 sec)


MariaDB [wordpress]>


show databases; 는 데이터 베이스 목록 이름을 보여줍니다.

use wordpress 명령은 wordpress라는 이름의 DB를 사용하겠다는 것입니다. wordpress 대신 자신이 만든 데이터베이스 이름을 넣어주면 됩니다. 

다음 명령은 워드프레스 내에서 루트 디렉토리를 어디로 하는지에 대한 정보를 보여줍니다.

우리는 사이트 주소 뒤에 있는 wordpress를 제거하면 됩니다.

MariaDB [wordpress]> update wp_options set option_value="http://yoursite.com" where option_name="home" or option_name="siteurl";

Query OK, 2 rows affected (0.00 sec)

Rows matched: 2  Changed: 2  Warnings: 0


MariaDB [wordpress]> select * from wp_options where option_name="siteurl" or option_name="home";

+-----------+----------------+----------------------+----------+

| option_id  | option_name  | option_value         | autoload |

+-----------+----------------+----------------------+----------+

|         2    | home            | http://yoursite.com | yes        |

|         1    | siteurl           | http://yoursite.com  | yes        |

+-----------+----------------+----------------------+----------+

2 rows in set (0.00 sec)


MariaDB [wordpress]> exit

"http://yoursite.com" 대신 자신의 사이트 주소를 써주면 됩니다. 그리고 제대로 바뀌었는지 select문으로 체크해 보겠습니다.

잘 바뀌었으면 접속을 해보도록 하겠습니다.

그리고 가상호스트 설정을 했다면 아파치서버를 다시 시작해야 합니다.

$service restart httpd

centos7은 다음명령입니다.

$systemctl restart httpd

이제 다시 사이트에 접속해봅시다.

이 댓글을 비밀 댓글로