2014-12-08 2 views
0

내가이 웹 사이트가 상상 :URL 재 작성 자식 가상 디렉터리

"사이트"는 IIS 가상 디렉터리와 "관리자"는 "사이트"가상 디렉터리 내부의 IIS 가상 디렉터리입니다
http://localhost/site/admin 

. 하나는 메인 웹 사이트이고 다른 하나는 관리 포털과 같기 때문에 "사이트"와 "관리자"는 별도의 웹 사이트입니다. 내가 가지고있는 문제는 URL의 관리 포털 부분입니다.

내가 예를 들어, 표시 할 페이지의 이름을 취하는의 index.php가 있다고 가정하자 :

나는 위의 URL은 다음과 같이 기록 될 수 있도록 URL 재 작성을 사용
http://localhost/site/admin/index.php?p=cats 

:

패턴 : ^([^/]+)/?$
작업 :

난 그냥 규칙의이 종류를 만들기 위해 IIS 규칙 마법사를 사용

잘 작동합니다.

http://localhost/site/admin/cats/123 

이 실제로 다음과 같습니다 : 지금 이와 같은 URL을 얻으려고하지만

http://localhost/site/admin/index.php?p=cats&id=123 

나는 이와 같은 패턴을 사용하려고 시도했다 :

^([^/]+)/([0-9]+)/?$ 

URL은 정상적으로 작동하지만 부작용은 이제 내 모든 상대 경로가 올바르지 않은 것입니다. '내가 다시 쓰는 후 URL이 "관리자"일부 후 "고양이"가 있기 때문에 무슨 일이 일어나고 생각

http://localhost/site/admin/cats/pages/header.php 

,하지만 난 할 수 있습니다

http://localhost/site/admin/pages/header.php 

그러나으로 끝나는 : 내가 원하는 것은 이 작업을 올바르게 수행하는 방법을 찾아야합니다.

감사합니다.

답변

0

최소한해야 할 일은 기존 페이지/콘텐츠 (예 : header.php)를 다시 작성하지 않는 것입니다. 또한 URL에서 가져온 부분을 URL 인코딩해야합니다. 철저한 테스트를 거치지 않으면 작동 할 수 있습니다.

<rule name="Rewrite"> 
    <match url="^(([^/]+)/)+([\w]+)/?([0-9]+)?$"/> 
     <conditions> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/> 
     </conditions> 
    <action type="Rewrite" url="index.php?p={UrlEncode:{R:3}}&id={UrlEncode:{R:4}}"/> 
</rule>