나는 이것에 대해 아직 답을 갖고 있지 않기 때문에 여기에 게시하고 있습니다..htaccess 정규 표현식 문제
나는 .htaccess 파일에 root/language/sub/.../document
의 형태로 URL과 일치하고 공격에 가까운 root/sub/.../document.php?lang=language
임로 다시하고 싶지만 내 정규 표현식이 아닌 '캐치'입력 URL을 않는 것 같다. 여기에 있습니다 :
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond ^[a-z]{2}.*$/%{REQUEST_FILENAME}\.php -f
RewriteRule ^([a-z]{2})/(.*)$ $2.php?lang=$1
누군가가 나를 잘못 지적 할 수 있습니까? 나는 regexp 나 apache를 다시 작성하는 전문가가 아니다.
Tyvm
* 도메인, 즉 편집 *
root
스탠드 여기 mydomain.net
은 몇 가지 예입니다 :
mydomain.net/fr/contact
이
에 rewriten한다 16,mydomain.net/contact.php?lang=fr
및
mydomain.net/en/articles/view
은
TYVM. 지금 당장은 그것을 확인할 수 없지만, 내일은 분명히 알려줄 것입니다. 지금 나는 아직도 마지막 질문을 가지고있다. 다른 GET 변수를 추가하면'lang = foo' 매개 변수에 추가되어야합니다. 따라서 문자열의 끝에서'\?. *'를 검색하면'& lang = foo'를 추가하고'? lang = foo'를 추가하면됩니다. 이렇게하면 나는 GET 행동을 잃지 않는다. 나는 당신의 앞에 그것과 함께'RewriteRule' 라인을 추가 할 수 있다고 생각합니까? 아니면 각각의'RewriteRule'에 대해'RewriteCond'의 또 다른 블록을 만들어야합니까? 고마워, 나는 대답을 받아 들였다. ^^ – PinkTurtle
(%) :'% {REQUEST_FILENAME} '은 전체 URI 즉'mydomain.net/fr/contact'을 포함합니까? 그렇지 않다면'(. */|)'(두 번째 줄)은 나에게 의미가 없습니다. 그러면 lang이 첫 번째 URL _bit_이됩니다. 또한, (. */|)에서 파이프가'|'무엇입니까? 나는'(. * /)'이'/'로 끝나는 모든 것을 매치한다는 것을 이해한다. 야생 추측 : 선택 조건? 어떠한 경우에도 도움을 주셔서 감사합니다. – PinkTurtle
@JulienMatthey - 플래그'[QSA]'는 자동으로'?'/'&'문제를 처리합니다. 걱정하지 마십시오 :)'(. */|)'에 관한 질문에 대해 - 이것은 '/'사전 언어 약어 또는 빈 문자열이 없으므로'|'는 ** 또는 ** 연산자입니다. 이게 도움이 되길 바란다. –