2014-07-22 4 views
0

URL에서 언어를 추출하고 http 매개 변수로 변환하는 mod 재 작성 일반 표현식으로 고민하고 있습니다.정규 표현식 다시 쓰기 규칙

내가 mydomain/tables.php?annnecal=2016&language=ES

다음 규칙에 mydomain/tables.php?annnecal=2015&language=FR

mydomain/ES/workingdays_per_month_2016.htmmydomain/FR/workingdays_per_month_2015.htm를 다시 할 것은 작동 : 언어가 URL에 생략

RewriteRule ^([A-Z]{2,2})/workingdays_per_month_([0-9]*).htm tables.php?anneecal=$2&language=$1 [L] 

경우, 나는 라를 기본값으로 다시 쓰고 싶다. nguage (영어) :

RewriteRule ^workingdays_per_month_([0-9]*).htm tables.php?anneecal=$1&language=EN [L] 

그 두 규칙이 따로 따로가 아니라 함께 작동 : mydomain/workingdays_per_month_2015.htm

mydomain/tables.php?annnecal=2015&language=EN에 그래서이 규칙을 추가했습니다.

mydomain/workingdays_per_month_2015.htm 이 페이지에 404 (찾을 수 없음)가 표시됩니다 (두 규칙이 .htacess에서 차례대로 추가 될 때).

답변

0

내 메모장은 실제로 Windows에서 실행중인 ++ 편집기와 Unix에서 실행되는 웹 서버에서 발생했습니다.

줄 끝은 [LF]입니다.

EOL을 [CR] [LF]로 기대하는 My Unix 서버는 2 가지가 아니라 하나의 규칙 만보고있었습니다.

메모장에서 ++, 보기 | 기호 표시 | 줄 끝 표시편집 | EOL 전환 | 유닉스

내 문제가 해결되었습니다.

0

이 같은 규칙을 유지할 수 있습니다 :

RewriteEngine On 

RewriteRule ^([A-Z]{2})/workingdays_per_month_([0-9]+)\.htm$ tables.php?anneecal=$2&language=$1 [L,QSA,NC] 

RewriteRule ^workingdays_per_month_([0-9]+)\.htm$ tables.php?anneecal=$1&language=EN [L,QSA,NC] 

이 규칙이 다른 규칙 앞에 배치되어 있는지 확인합니다.

+0

여기에 대해 자세히 알려주십시오. – anubhava