2011-07-30 2 views
1

.htaccess 파일을 작동 시키려고합니다. 글쎄 이미 효과가 있지만, 지금은 조금 성가시다. 나는 다음과 다국어 웹 사이트를 지원하기 위해 내 htaccess로를 modyfied 한.htaccess rewritecond는 무언가와 일치합니다.

는 :

RewriteEngine On 

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

RewriteCond %{REQUEST_URI} !^/public/[a-z]{2}/ [NC] 
RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 

# match those that DO have a language code 
RewriteRule ^([a-z]{2})/(.*)$ index.php?lang=$1&url=$2 [PT,L] 

이 마법처럼 작동합니다. 2 바이트 언어 코드가 URL의 시작 부분에 추가되면? lang이 index.php에 추가됩니다. 그러나 이것은 자바 스크립트 폴더가 "js"로 불려 지므로 문제가됩니다. 이는 언어 코드 인 것처럼 취급 될 것임을 의미합니다. 나는 실제로 두 개의 첫 번째 RewriteCond가 이런 일이 일어나지 않도록 막을 것이라고 생각했지만 분명히 그렇지 않다.

.htaccess가 내가 가장 잘하는 사람이 아니라는 것을 인정해야합니다. 그래서 나는 간단한 해결책을 찾지 못했을 것입니다.

답변

4

옵션 # 1 : 사용 (대신 마지막 줄의)이 규칙은 :

RewriteRule ^(?!js)([a-z]{2})/(.*)$ index.php?lang=$1&url=$2 [PT,L] 

/js/hello을 위해 아무것도 할 것입니다하지만 /en/hello이 (예를 들어) 요청이있는 경우 다시 작성됩니다.

# 2 옵션 : 당신이 이전 규칙에 대해 무엇을 유사한 조건을 추가 (내가 /public/js/ 당신의 자바 스크립트 파일에 대한 실제 폴더 가정 - accordignly 이름을 조정하지 않은 경우) :

RewriteCond %{REQUEST_URI} !^/public/js/ 
RewriteRule ^([a-z]{2})/(.*)$ index.php?lang=$1&url=$2 [PT,L] 

나는 # 1을 추천한다 - 그것은 이해하기가 더 어려울 수있다. 그러나 그것은 한 줄에 조금 더 빠르다 (# 2에서 두 개의 대 정규 표현식).

관련 문제