2011-10-07 7 views
0

다음 mod_rewrite 줄이 있습니다 (이 파일은 .htaccess 파일의 유일한 줄입니다). 그것은 첫 번째 이름을 login 이외의 이름으로 바꿀 때 작동하지만 실제 스크립트와 같은 이름 인 경우 어떤 이유로 $_GET['initials']을 전달하지 못합니다. 어떻게 든 자체 재 작성을 덮어 씁니까?

RewriteRule ^login/([a-z]{1,5}) login.php?initials=$1 [L] 

편집 :

이 $ _SERVER를 보면,이 PHP가 로딩을 끝 페이지는 다음과 같습니다

'ABC'가 제공하는 intitials입니다
'PHP_SELF' => string '/admin/login.php/abc' (length=19) 

. 그래서 쿼리 문자열을 완전히 삭제하고 해당 페이지를로드하려고 시도합니다.이 페이지는/abc 디렉토리가 존재하지 않아도 login.php가 아닌 404를로드합니다.

+0

$ 작업을 추가하지 않습니까? 'RewriteRule^login/([a-z] {1,5}) $ login.php? initials = $ 1 [L]''RewriteBase /'가 있습니까? – Benno

+0

아니요 여전히 실패합니다. RewriteBase를 설정하지 않았습니다. 처음 들어 봤습니다. – Matthew

+0

.htaccess는 기본 아파치 디렉토리가 아닌 하위 디렉토리에 있습니다. – Matthew

답변

0

이 대신 사용해보십시오 : 당신이 login.php 앞에있는 서브 디렉토리를 추가하는 경우

RewriteEngine On 
RewriteBase /SUBDIRECTORY_NAME_HERE/ 
RewriteRule ^login/([^/]*)/$ /login.php?initials=$1 [L] 

도 도움이 될 수 있습니다.

RewriteRule ^login/([^/]*)/$ /SUBDIRECTORY_NAME_HERE/login.php?initials=$1 [L] 
0

위의 의견에 있지만 실제로 취할 말은 아닙니다. Options -Multiviews Options +FollowSymLinks RewriteEngine On RewriteBase /SUBDIRECTORY_NAME_HERE/ RewriteRule ^login/([^/]*)/$ /login.php?initials=$1 [L]

관련 문제