문제

나는 설정하고 싶었다 .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]

정말 감사합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top