.htaccess Rewritecond Recrite Case 레벨 2 폴더 = info
-
05-07-2019 - |
문제
나는 설정하고 싶었다 .htaccess
다시 작성하려면 :
example.com/bla/info/
에게
example.com/info/index.php?q=bla
example.com/bla/info/txt/
에게
example.com/info/index.php?q=bla&t=txt
브라우저가 여전히 표시되기를 원했습니다.
example.com/bla/info/txt/
나는 레벨 2 재 작성에서 다시 쓰기를 원하지 않았다 :
example.com/bla/xxx/
또는
example.com/ccc/zzz/aaa/
하지만
example.com/silly/info/
뿐만 아니라 작동합니다
example.com/strange/info/mytxt/
이것이 말이 되었습니까?
도움이 있습니까?
해결책
^로 패턴을 시작하고 $로 끝나면 규칙은 전체 문자열이 일치하는 경우에만 적용됩니다.
RewriteRule ^/bla/info/$ /info/index.php?q=bla
RewriteRule ^/bla/info/txt/$ /info/index.php?q=bla&t=txt
사용하는 경우 [r] 옵션을 사용하지 않으면 브라우저에 표시된 URL은 사용자가 입력 한 내용이됩니다.
이 범용을 만들려고합니까? 그렇다면 Regex 유형 매칭 및 가변 대체를 사용할 수 있습니다. 'bla'를 다음 슬래시 (/)까지 일치 시키려면
([^/]+)
당신의 패턴에서 당신의 대체에서 $ 1로 그것을 참조하십시오.
RewriteRule ^/([^/]+)/info/$ /info/index.php?q=$1
RewriteRule ^/([^/]+)/info/([^/]+)/$ /info/index.php?q=$1&t=$2
나는 추천한다 Mod_rewrite에 대한 Apache 웹 페이지 자세한 내용은.
편집하다. 원래 포스터가 알아 낸 것처럼 패턴에 호스트 이름을 포함하지 않는 규칙을 수정했습니다.
--
BMB
다른 팁
당신은 나를 올바른 길로 데려갔습니다.
나는 다음과 같은 것으로 끝났다 :
RewriteRule ^([^/\.]+)/info/?$ example/info/index.php?q=$1 [L]
정말 감사합니다
제휴하지 않습니다 StackOverflow