2014-09-13 3 views
2

I 현재 사용자 이름에 대한 사용자에게 자신의 URL을 제공하는 장소에 다음 코드가 있습니다.htacess 이름의 URL이 존재

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?username=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?username=$1 

그러나, 기존의 디렉토리와 같은 /about/ 또는 /terms/ 더 이상이 있기 때문에 작동하지를 코드가 URL을 덮어 썼습니다.

파일이나 디렉토리가없는 경우 URL을 프로필 만 가리 키도록 조정할 수 있습니까?

+0

https://stackoverflow.com/q/25710768/1190388 – hjpotter92

답변

3

폴더가 실제로 존재하는지 확인하고, 그렇다면 이 아닌 리디렉션 규칙을 적용해야합니다. 이러한 조건이 일치하지 않으면 리디렉션 규칙을 계속합니다.

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?username=$1 
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?username=$1 

-f 플래그는 파일로 존재 의미하며, -d는 디렉토리를 의미한다. / 그것과 일치하는 것을 의미합니다 후

RewriteRule ^([a-zA-Z0-9_-]+)/?$ profile.php?username=$1 

? : 요청 된 파일이 실제로 파일이나 디렉토리 인 경우 지금 당신은 당신의 리디렉션 규칙을 단축 할 수

또한 리디렉션 규칙을 계속하지 않을 것이다 또는 그 문자없이. 정규 표현식의 나머지 부분은 변경되지 않으므로이 규칙은 두 경우를 동시에 처리합니다.