2012-02-12 4 views
0

내가 쓴이 정규식을 확인할 수있는, 내가 뭘 원하는지 않습니다,하지만 그것을 할 올바른 방법이고 모든 것을 감속 않는 경우 잘 모르겠습니다.Regex in .htaccess 두 부정적인 조건을 결합

URL 경로가 더 이상 "/ 드"또는 "/ EN"를 시작 에서 THEN 301 그것이로는 문자열을 포함하지 않는 경우에만 그리고 만약 도메인보다

경우 :이해야 할 일이다

도메인 만

그건 내가 쓴거야 :

RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ 
RewriteCond %{HTTP_HOST} ^(?!.*(/de|/en)) 
RewriteRule .* http://example.com/ [L,R=301] 

... 그게 더 좋은 방법입니까?

감사합니다. HTTP_HOST는 아주 작은 차이를 만드는 런타임에서/

을 포함하지 않습니다으로 우르스

+0

'URL 경로가 도메인보다 길 경우 '로 작성하면 이해하기 쉽습니다. 그게 무슨 뜻 이니? mod_rewrite가 텍스트 길이를 검사 할 수 없습니다. – Gerben

답변

2

난 당신이 %{REQUEST_URI}을 읽어야는 "mindfart"두 번째 COND했다 가정하고 그렇지 않으면 아무 의미가 없지만이다

RewriteCond %{REQUEST_URI} !(/de|/en) 
+0

마음이 아님, 그냥 평범한 우둔함 :-) – Urs

+0

내가하고 싶은 일을 다시금 반영했다. 위 그림에서보다 간단하다. REQUEST_URI가/de 또는/en으로 시작하지 않으면 앞에/de를 추가한다. 그것의. 그 일을 도와 줄 수 있어요? (또한 mod_rewrite 튜토리얼을 가르쳐 주시겠습니까?) – Urs

+0

규칙 패턴에서 부정적인 표제 어설 션을 사용하십시오. \ (여기 [http://www.regular-expressions.info/lookaround.html] \)에 설명되어 있습니다. 'RewriteRule^(?! de /) (?! en /).* - [L]'. ('.htaccess' 파일의 규칙 패턴에 선행하는'/'는 없습니다). 규칙 패턴으로 재생하려면 [이 스크립트] (http://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules/9261963#9261963)를 사용하십시오. 자습서와 관련하여 Google이라는 것이 있습니다. 나는 구글이 존재하기 전에 그것들을 배웠다. LoL. 즐겨!! – TerryE