2011-08-24 3 views
1

나는 현재이 좋은 작품을 지배 .htaccess로했다 휴식을 취하면 문자가 올바르게 이스케이프 처리되지 않았다고 가정합니다.htaccess로 문제가

RewriteRule ^instructor/([A-Za-z0-9-\.]+)$ instructor.php?username=$1 [NC,L] 

누구나 올바른 방향으로 가리 키시겠습니까?

업데이트

이 디렉토리 구조를 함께 할 수있는 뭔가가 될 것으로 보인다.

이 사이트에 적용되는 규칙의 또 다른 선택은 다음과 같습니다

## Registration 
RewriteRule ^instructor/register/?$ instructor-form/index.php [L] 
RewriteRule ^instructor/register/stage([1-5]+)$ instructor-form/stage$1.php [L] 

이 잘 작동 (여기 디렉토리는이 규칙이 지적 instructor/라는 디렉토리도 있습니다, 그러나 instructor-form/

입니다 to :

RewriteRule ^instructor/dashboard/?$ instructor/index.php [L] 
RewriteRule ^instructor/account-details/?$ instructor/account-details.php [L] 
RewriteRule ^instructor/change-password/?$ instructor/change-password.php [L] 

다음은 . i를 추가 할 때 적용되는 규칙입니다. 첫 번째 규칙. 규칙은 모두 [A-Za-z0-9-] 문자 블록에 .없이 제대로 작동합니다. 추가 할 때 실제 instructor/ 폴더에 액세스 할 수없는 것으로 보입니다.

답변

1

질문에 많은 글을 썼지 만 중요한 세부 사항은 언급하지 않았습니다. 실제로 깨진 내용은 무엇입니까? 나는 명확한 대답이 없기 때문에 지금까지 제공 한 정보를 토대로 여기서 추측 할 것입니다. instructor/change-password.php

내가 .. 너무 많이 [L] 플래그 릴레이 생각이나 instructor/index.php, instructor/account-details.php :


RewriteRule ^instructor/([A-Za-z0-9-\.]+)$ instructor.php?username=$1 [NC,L] 

이 규칙의 문제는 이미 다시 PHP 파일을 다시 작성하는 것입니다 mod_rewrite 및 [L] 플래그가 작동하는 방식을 실제로 알지 못합니다. 그래서 당신은이 문제를 겪고 있습니다. 패턴에 점이 찍힌 규칙은 이미 재 작성된 URL을 다시 작성합니다.

유용한 링크 : RewriteRule Last [L] flag not working?


이미 재 작성 URL이나 기존 파일을 다시 작성 방지하기 위해 (이 규칙에만 전역 규칙 또는 특정 조건) 어떤 조건을 추가해야합니다.

1. 전체 규칙 - 다른 규칙보다 먼저 어딘가에 배치하십시오. (실제로 요청을 다시 작성해야 할 때 이미 파일 또는 폴더를 기존하기 위해, 예를 들어)이 의도 웹 사이트의 구조에 따라 같은 일을하고 논리를 재 작성하지 않을 수도 있음을 명심하십시오 :

# do not do anything for already existing files 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .+ - [L] 

2.해당 규칙에 특정 조건 :

A) 요청 된 URI는 실제 파일이

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^instructor/([A-Za-z0-9-\.]+)$ instructor.php?username=$1 [NC,L] 

또는

B의 경우 재 작성하지 않음) .PHP 다시하지 않는 파일

RewriteCond %{REQUEST_URI} !.+\.php$ 
RewriteRule ^instructor/([A-Za-z0-9-\.]+)$ instructor.php?username=$1 [NC,L] 
+0

감사 당신에 대한 자세한 설명은 글로벌 규칙이 작동했습니다. :) – lethalMango