domain.com/@아이디 이렇게 접속이 되게 하려면 채택완료
domain.com/@아이디 이런식으로, '@' 아니더라도 심플('?mb_id=아이디' 이런 것처럼 ?나 = 사용안하고요.)하게 계정아이디로 마이페이지 같은 페이지를 만들어서 접속할 수 있는 방법이 있을까요? 게시판을 회원마다 만들어 줄 수는 없고, 게시판 하나에서 특정회원이 작성한 글을 볼 수 있게 url 을 단축주소처럼 사용할 수 있는 방법이 있는지 궁금합니다.
답변 3개
재작성 스킬을 활용하시면 도메인 뒤에 ‘@아이디’와 같은 형태로 접속하게 하실 수 있습니다.
예로, Apache 서버를 사용한신다면 .htaccess 파일에 mod_rewrite를 이용해
다음과 같이 설정하실 수 있습니다.
RewriteEngine On RewriteRule ^@([a-zA-Z0-9_-]+)/?$ /profile.php?username=$1 [L,QSA]
이 규칙은 도메인 뒤에 ‘@아이디’ 형식으로 요청이 들어오면
내부적으로 profile.php 파일에 해당 아이디를 파라미터로 전달하여 처리하도록 합니다.
Nginx 서버의 경우에도 비슷한 방식의 rewrite rule을 설정할 수 있습니다.
즉, 회원마다 별도의 게시판을 만드는 대신, 단일 게시판 내에서
특정 회원의 글만 필터링해서 보여주는 기능을 구현할 수 있으며,
이를 위해 URL rewriting을 통한 “심플 URL”을 사용하시면 됩니다.
이는 많은 웹 프레임워크에서 기본적으로 지원하는 기능이니,
개발 환경에 맞춰 적절한 방법을 선택하시면 되지않나 싶습니다.
유지보수/확장성을 고려해,
MVC 패턴을 채택한 프레임워크를 활용하실 것을 추천드립니다.
답변에 대한 댓글 2개
해당 .htaccess 파일이 실제로 읽히고 있는지 테스트하시기 바랍니다.
*.htaccess 파일이 사이트 루트에 위치한 경우,
RewriteBase /를 명시적으로 지정하시면 경로 해석에 도움이 될 수 있습니다.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^@([^/]+)/?$ /member_profile.php?mb_id=$1 [QSA,L]
*만약 동일한 이름의 파일이나 디렉토리가 존재한다면,
rewrite 규칙이 제대로 작동하지 않을 수 있습니다.
위 예시처럼 RewriteCond %{REQUEST_FILENAME} !-f와
RewriteCond %{REQUEST_FILENAME} !-d를 추가하여
요청 URL이 실제 파일이나 디렉토리가 아닐 때만 규칙이 적용되도록 하시기 바랍니다.
댓글을 작성하려면 로그인이 필요합니다.
안녕하세요...
@모몽 님
먼저 .htaccess 파일에 보면
</p>
<p>#### 그누보드5 rewrite BEGIN #####</p>
<p><IfModule mod_rewrite.c></p>
<p>RewriteEngine On</p>
<p>RewriteBase /</p>
<p>RewriteCond %{REQUEST_FILENAME} -f [OR]</p>
<p>RewriteCond %{REQUEST_FILENAME} -d</p>
<p>RewriteRule ^ - [L]</p>
<p>
이부분이 있을꺼에요
이 구문 바로 밑에 써주셔야 합니다. 맨 먼저 실행할 수 있도록
RewriteRule ^ - [L] 바로 밑에
RewriteRule ^@([0-9a-zA-Z_-]+)/?$ member_profile.php?mb_id=$1 [L,QSA]
추가 해주세요 잘 모르겠다? 하시면 스샷 참고하세요

그리고 나서 테스트 해보시면 잘 되실껍니다.
아래는 실제 구동 영상입니다.
http://sir.kr/data/editor/2503/978180634_1741943269.654.gif" width="100%" />
답변에 대한 댓글 4개
.htaccess 코드는
PHP_FLAG register_globals ON
PHP_VALUE mysql.default_charset UTF8
# sitemap.xml PHP 처리
<Files sitemap.xml>
ForceType application/x-httpd-php
</Files>
RewriteEngine On
# www 접두사 제거 및 HTTPS 적용 (단일 리다이렉션으로 처리)
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC,OR]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
인데 어떻게 수정하면 될까요?
바로 밑에 넣어주세요
테스트하신 member_profile.php 코드를 알 수 있을까요?
하다못해 1234 글자만 써도 나와야 합니다.
실제 사용한 .htaccess 파일 소스 코드 전체를 올려주시거나 여기 올리기 좀 그렇다면 쪽지로 보내주세요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
답변 주시기 전에
member_profile.php 파일을 만들고,
.htaccess 에서
RewriteEngine On
RewriteRule ^@([^/]+)/?$ /member_profile.php?mb_id=$1 [QSA,L]
를 추가하여 여러시도를 해봤는데,
https://도메인.com/member_profile.php?mb_id=아이디
로는 페이지가 열리는데,
https://도메인.com/@아이디
로는 404 에러만 계속 나더군요.
알려주신 대로
RewriteRule ^@([a-zA-Z0-9_-]+)/?$ /profile.php?username=$1 [L,QSA]
적용해봐도 404 에러가 나네요 ㅜㅜ