2014-11-11 4 views
1

API.htaccess 파일로의 액세스를 시도하고 있는데 문제가 있습니다.HTAccess URL 다시 쓰기 규칙

예를 들어, 내가 달성하고 싶은 것은 :

  • 사용자가 http://localhost/teammngr/user/photos/secrethash에 도달 자동 http://localhost/teammngr/user/photos.php?sid=secrethash로 리디렉션됩니다.

  • 사용자는 http://localhost/teammngr/user/config/secrethash에 도달하고 자동으로 http://localhost/teammngr/user/config.php?sid=secrethash으로 리디렉션됩니다.

  • 사용자가 http://localhost/teammngr/team/members/secrethash에 도달하면 자동으로 http://localhost/teammngr/team/members.php?sid=secrethash으로 리디렉션됩니다.

사용자가이 파일을 직접보고 싶으면 가능할 것으로 예상됩니다. 또한 은 http://team.mywebsite.com/과 같은 하위 도메인 아래에 있습니다.

지금까지, 나는 다음과 같은 .htaccess 파일을했습니다,하지만 내 서버에 500 오류를 던지고 유지합니다. 이 파일은 루트 디렉토리가 아니라 하위 디렉토리에 있습니다.

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase /teammngr 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^user/([a-z_]+)/([A-Za-z0-9_-]+)$ /user/$1.php?sid=$2 [L] 
RewriteRule ^team/([a-z_]+)/([A-Za-z0-9_-]+)$ /team/$1.php?sid=$2 [L] 

어디에서 실수 했습니까?

귀하의 소중한 도움에 감사드립니다.

+1

왜 당신이 할'RewriteBase/teammngr'합니다. 귀하의 URL에'teammngr'이 없습니다. – anubhava

+1

@anubhava 당신이 그것을 나를 때려 라 하하 :) – Prix

+0

죄송합니다, 나는 psot에서 실수를했습니다. 그걸 편집하겠습니다. – Manitoba

답변

1

RewriteCond은 바로 다음에 적용됩니다 RewriteRule. 모든 규칙 앞에 RewriteCond이 반복되는 것을 피하기 위해 파일 및 디렉토리에 대한 요청을 무시하는 별도의 규칙을 가질 수 있습니다. 또한 대상 URI에서 /을 제거하십시오.

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase /teammngr/ 

# ignore requests for files and directories from rules below 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^user/(\w+)/([\w-]+)/?$ user/$1.php?sid=$2 [L,QSA] 
RewriteRule ^team/(\w+)/([\w-]+)/?$ team/$1.php?sid=$2 [L,QSA] 
+1

+1 다른 문제는 mod_rewrite가 자신의 경우를 제외하고는 '-MultiViews'가 포함되어 있다고 대답 할 수 없다는 것입니다. – Prix

+0

고마워요 @Prix, PHP 파일 이름이 URI 경로와 비슷했기 때문에'-MultiViews'를 추가했습니다. 그러나 500에 대한 올바른 이유는'mod_rewrite'가 활성화되지 않았기 때문일 수도 있습니다. – anubhava

+0

답변 해 주셔서 감사합니다. 나는 여전히 오류가 있지만'mod_rewrite'가 내 서버에서 활성화되어 있습니다. – Manitoba

0

이 시도 할 수 있습니다 :

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase /teammngr 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^user/([a-z_]+)/([A-Za-z0-9_-]+)$ user/$1.php?sid=$2 [L] 
RewriteRule ^team/([a-z_]+)/([A-Za-z0-9_-]+)$ team/$1.php?sid=$2 [L]