2012-08-07 3 views
1

.htaccess에 다음 코드가 있습니다.Apache mod_rewrite 모듈 문제

RewriteEngine On 
RewriteRule ^/(\w+)/?$ /?user=$1 

나는 http://domain.com/usernamehttp://domain.com/?user=username를 다시 작성하는 것을 시도하고있다. 불행히도이 코드는 아무 것도 다시 작성하지 않습니다. 제발 도와주세요

참고 : 나는 phpinfo()을 확인했고 mod_rewrite가로드되었습니다.

업데이트

나는 http://facebook.com/username 같은 URL에서 사용자 이름을 얻을 필요가있다. 하지만이 코드는 루트 폴더의 모든 폴더를 다시 작성하므로 my/css 폴더는 http://domain.com/css/?u=common이됩니다. 이 코드는 http://domain.com/index.php

+0

URL은 'http : //domain.com/user = username' (실제 URL)로 다시 쓰려고하는'http : // domain.com/username '과 같은 모양입니까? – ThinkingMonkey

+0

@ InputMonkey 문제는 입력 및 출력 순서가 잘못 되었습니까? – treng

+0

네 RewriteRule 괜찮을 것 같습니다. 브라우저에서 'http : // domain.com/username' URL에 액세스하려고하십니까? – ThinkingMonkey

답변

1

당신이하고있는 실수 작동 할 수 있도록하는 방법에 일치하는 ^/(\w+)/?$

재 작성 규칙 패턴의 처음부터 /을 스트립 라인의 시작 부분에서 /의 사용이다 .htaccess 및 디렉토리 컨텍스트. 이 일을

시도 : RewriteRule Directive docs에서

RewriteEngine On 
RewriteRule ^(\w+)/?$ /?user=$1 

: 무슨

을 일치?

VirtualHost 컨텍스트에서 패턴은 처음에는 호스트 이름과 포트 다음의 URL 부분과 쿼리 문자열 앞에 일치합니다 (예 : "/app1/index.html").

디렉토리 및 htaccess 컨텍스트에서 패턴을 처음으로 파일 시스템 경로에 일치시킵니다. 서버는 현재 RewriteRule (예 : "app1/index.html"또는 "index.html")에 연결되는 접두어를 제거한 후 지시어가 정의 된 곳).

호스트 이름, 포트 또는 쿼리 문자열과 일치 시키려면 % {HTTP_HOST}, % {SERVER_PORT} 또는 % {QUERY_STRING} 변수와 함께 RewriteCond를 사용하십시오. 이 추가 :


편집 : OP의 요청에 따라 업데이트 대답

RewriteEngine On 

#do nothig if URL is trying to access the folder CSS. 
RewriteRule *css/* - [L] 

#checks where the URL is a valid file/folder. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(\w+)/?$ /?user=$1 
1

당신이 라운드 그것은 올바른 방법으로하고 있다는 것을 생각하지만, 라운드 그것을 잘못된 방법을 설명!

테스트에 전달 된 URL에 초기 문자가 필요하지 않으므로 문제가되지 않습니다.

나는 그것을 (+ w \) RewriteRule의^/? $ /? U = $ (1)

또한, 루프와 끝까지하지 않도록주의해야한다 의심!