테스트 사이트 - 개발 중인 베타 버전입니다

domain.com/@아이디 이렇게 접속이 되게 하려면 채택완료

모몽 8개월 전 조회 1,795

domain.com/@아이디 이런식으로, '@' 아니더라도 심플('?mb_id=아이디' 이런 것처럼 ?나 = 사용안하고요.)하게 계정아이디로 마이페이지 같은 페이지를 만들어서 접속할 수 있는 방법이 있을까요? 게시판을 회원마다 만들어 줄 수는 없고, 게시판 하나에서 특정회원이 작성한 글을 볼 수 있게 url 을 단축주소처럼 사용할 수 있는 방법이 있는지 궁금합니다.  

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
glitter0gim
8개월 전

재작성 스킬을 활용하시면 도메인 뒤에 ‘@아이디’와 같은 형태로 접속하게 하실 수 있습니다.

예로, 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개

모몽
8개월 전
호스팅은 카페24 를 사용하고 있습니다.

답변 주시기 전에

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 에러가 나네요 ㅜㅜ
g
glitter0gim
8개월 전
*Apache의 mod_rewrite 모듈이 활성화되어 있는지 확인하시어,
해당 .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이 실제 파일이나 디렉토리가 아닐 때만 규칙이 적용되도록 하시기 바랍니다.

댓글을 작성하려면 로그인이 필요합니다.

8개월 전

안녕하세요...

@모몽 님

 

먼저 .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개

모몽
8개월 전
현재 제가 쓰고 있는
.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]

인데 어떻게 수정하면 될까요?
미니님a
8개월 전
RewriteEngine On

바로 밑에 넣어주세요
모몽
8개월 전
404 에러가 나네요.
테스트하신 member_profile.php 코드를 알 수 있을까요?
미니님a
8개월 전
404는 코드와 무관합니다. 해당 파일을 찾을 수 없다는 뜻입니다.

하다못해 1234 글자만 써도 나와야 합니다.

실제 사용한 .htaccess 파일 소스 코드 전체를 올려주시거나 여기 올리기 좀 그렇다면 쪽지로 보내주세요

댓글을 작성하려면 로그인이 필요합니다.

e
8개월 전

domain.com/게시판아이디?sfl=mb_id&stx=회원아이디 이렇게 하면 해당 게시판의 작성자 아이디로 검색해서 보여줍니다.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

모몽
8개월 전
?sfl=mb_id&stx= 이 코드가 없이 사용하는 방법을 찾고 있어서요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인