2013-12-19 2 views
0

다시 쓰기 규칙 구문에 어려움을 겪고 있습니다. 네가 도울 수 있기를 바래.RewriteRule 구문 및 구성에 문제가있어 어려움이 있습니다.

노드 패키지 모듈을 사용하여 슈퍼 아약시 사이트의 html 스냅 샷을 작성했습니다. 이 모듈은 나중에 escape_fragment rewrite rules에 사용할 수 있도록 URL이라는 디렉토리에 스냅 샷을 출력합니다. 따라서 exampledomain.net/a45.php?lang=eng은 ./snapshots/a45.php?lang=eng/index.html로 출력됩니다. 그래서 그 디렉토리에 CD를 넣으려면 물론 특수 문자를 이스케이프해야합니다.

http://testdomain.net/a45.php?lang=eng에서 http://testdomain.net/snapshots/a45.php?lang=eng/index.html까지 다시 쓰려고하는데 다시 쓰기 규칙을 적용 할 수 없습니다. 하위 디렉토리

Options +FollowSymLinks 
RewriteEngine On 
ReWriteBase /var/www/vhosts/testdomain.net/httpdocs/secure/clients/amg/3dot0 
RewriteRule ^a45\.php?lang=eng$ /snapshots/a45.php?lang=eng/index.html 

나는 또한 함께하고 RewriteBase없이 시도에 htaccess로 파일에 :

다음은 내가 해봤 구문입니다. 나는 두 번째 URL을 이스케이프 처리하고 첫 번째 URL에 다른 문자를 사용하여 위와 동일하게 시도했습니다. OH 및 전체 httpdocs 디렉토리의 Allowoverride를 모두 활성화해야합니다. 주요 vhost.conf 파일 - Options + Indexes를 통해이 트리 전체에서 디렉토리를 탐색 할 수 있기 때문에 지시문이 작동하고 있음을 알고 있습니다.

어떤 조언이나 단서가 크게 감사하겠습니다!

답변

1
  1. 문자를 포함한 디렉토리 이름은 무엇입니까? = /는 좋아하지 않을 것입니다. 그들을 피하십시오.

  2. 다시 쓰기의 목적은 다른 페이지를 다른 디렉토리에서 실행하여 새로운 디렉토리에 무언가를 덤프하지 않는 것입니다. 그게 당신이하려는 일 이니? /snapshots/a45.php?lang=eng/ 디렉토리에 index.html 파일을 실행하는 것보다 서버에 알려줍니다.

  3. RewriteRule은 어쨌든 쿼리 문자열을 보지 않습니다 (? lang = eng). ? p가 선택적이라는 것을 알려줍니다.

+0

OH! {QUERY_STRING}을 (를) 사용해야합니다. 더 자세히 읽으십시오. – funkenstein

+0

RewriteCond % {QUERY_STRING}^(\ w +) = (\ w +) $ RewriteRule ^/path/path/% 1/% 2? – funkenstein

+0

QUERY STRING에있는 내용을 확인하고 RewriteCond에서 가져올 수 있지만,?, &, =, /와 같은 서버의 운영 체제를 혼동시킬 수있는 이상한 문자가 있으면주의해야합니다. 정확히 여기서 뭘 하려구? QS에있는 것을 기반으로 특정 index.html을 실행 하시겠습니까? 아니면 새로운 디렉토리에 무언가를 덤프하려고합니까? –

관련 문제