2013-08-18 2 views
4

소셜 네트워킹 웹 사이트를 만들고 있는데 다음과 같이 처리 할 수 ​​없습니다. URL이 http://url.com/@username 인 경우 http://url.com/user?u=username 페이지를 표시하고 싶지만 http://url.com/@username URL을 표시하고 싶습니다.트위터처럼 URL이 있지만 @가 있습니까?

그러나 처음에는 @이 없으면 일반 URL처럼 취급하십시오.

이 내 .htaccess 파일입니다

Options +FollowSymLinks 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php [NC,L] 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^/(\d+)*$ ./user.php?u=$1 

마지막 세 줄 내가 뭘하려합니다, 그러나 나는 그것을가 원하는대로 작동하지 않습니다. RewriteRule ^/(\d+)*$이 슬래시 뒤에 URI를 가져 와서 .user.php?u=*으로 다시 작성했기 때문에 작동 할 것이라고 생각했지만 작동하지 않아 다음에 수행 할 작업에 대한 제안을 찾고 있습니다.

답변

3

귀하의 질문에 대한 이해에서,이 작동합니다.

Options +FollowSymLinks 

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^@(.+?)$ user.php?u=$1 [NC,L] 

그것은 사용자 이름 앞에 @가 있어야하고 그것이 GET 변수 (U) 그러나, 사람이 사용자 이름으로 혼동 할 수있는 다른 문자를 추가 할 수 있습니다로 전달합니다. 사용자 이름/머핀

그러나 당신이 원하는 경우, 그리고 사용자 이름 당 페이지를 가지고 @

/(예 :/사용자 이름/정보 @/@ 사용자 이름/약 등)을 그냥 사용할 수있는 explode() PHP에서의 함수. 당신은 그냥 사용자 이름과 아무것도를 얻고 싶다면

, 당신이 도움이

RewriteRule ^@([A-Za-z0-9]+)$ user.php?u=$1 [NC,L] 

희망을 시도 할 수 있습니다! :)

+0

'/ @ username? about'은 무엇이라고합니까? – VladHQ

+1

PHP의 폭발 기능을 사용할 수 있습니다. 1 개 이상의 파트가 있는지 알아 봅니다 (파트 1 = 사용자 이름, 2 = 페이지 등) 그런 다음 두 번째 파트를 가져 와서 페이지로 사용하십시오. 그렇지 않으면 기본 페이지가 표시됩니다. –

+0

좋아요, 마지막으로, URL이'http : // localhost/@'이면 404 경고를 주며 ** ** @ ** 뒤에 아무 것도 없으면 만들 수 있습니까? 색인으로 다시 리디렉션 하시겠습니까? – VladHQ

관련 문제