2011-06-12 6 views
1

내가 .htaccess 파일에이 코드 조각을 데에 비해 htaccess로 코드를 넣어 때다른 결과 값을 httpd.conf

내가하고 싶은 정확하게 수행
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?pic=$1 

. 그러나,

Array ([pic] => 345) 

: 나는 mydomain.com/345를 방문하면 내가 mydomain.com/index.php?pic=345 및 인 print_r를 입력 한 것처럼이 같은 것 ($이 _ GET)이를 반환 ,

Array ([pic] => var/www/mydomain.com/htdocs/345) 

은 물론 : 나는 이와 같이, $ _GET 매개 변수를 포함하는 대신 파일의 전체 내부 경로를 반환하는 대신 .htaccess 파일의 내 미리 컴파일 된 conf의 파일이 정확한 코드를 삽입하려고 해당 문자열의 마지막 부분을 가져 오거나 REQUEST_URI를 사용하여 데이터를 가져올 수는 있지만 문제를 해결하지 않고 그냥 돌아 다니는 것입니다. 왜이 일을하는 사람이 누구인지 압니다. 내부적으로 경로를 컴파일하고 있다는 사실과 관련이 있다고 생각합니까?

필요한 경우 완전한 conf 파일이 있습니다. 도메인 이름을 다소 중립적으로 유지하기 위해 전환했을뿐입니다. :-)

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName mydomain.com 

    # Indexes + Directory Root 
    DirectoryIndex index.php 
    DocumentRoot /var/www/mydomain.com/htdocs/ 

    # CGI Directory 
    ScriptAlias /cgi-bin/ /var/www/mydomain.com/cgi-bin/ 
    <Location /cgi-bin> 
      Options +ExecCGI 
    </Location> 

    # Logfiles 
    ErrorLog /var/www/mydomain.com/logs/error.log 
    CustomLog /var/www/mydomain.com/logs/access.log combined 

    <Location /> 
      RewriteEngine On 
      RewriteCond %{REQUEST_FILENAME} !-f 
      RewriteCond %{REQUEST_FILENAME} !-d 
      RewriteRule ^(.*)$ index.php?pic=$1 
    </Location> 
</VirtualHost> 

편집

내가 대체하여 그것을 "해결":이와

<Location /> 

그러나

<Directory /var/www/mydomain.com/htdocs> 

, 난 여전히 궁금 해요 왜 < 위치 /> 작동하지 않았다, 아무도 생각을 가지고?

+0

정수 값이 필요하다면'.' 대신'\ d'를 사용하십시오. – Gumbo

+0

저는 문자와 숫자가 모두 필요하다고 생각합니다. 345는 단순한 예제 값이었습니다. 그래도 고마워. – Felthragar

답변

1

latest (apache 2.2) documentation of mod_rewrite에는 위치 지시문을 사용하지 않는 것이 명확히 명시되어 있습니다 (페이지 내 검색 위치). 흥미로운 메일을 the users httpd mailing list에서 볼 수 있습니다. 그러나 이것은 예를 들어 in the 2.0 documentation으로 명시되지 않았습니다.

다시 쓰기 규칙은 섹션과 섹션에서 구문 적으로 허용되지만 절대 필요하지 않으며 지원되지 않습니다.

그래서 예기치 않게 예측할 수없는 mod-rewrite 실행 방법을 사용하고있는 것 같습니다. 이것은 분명히 살기 좋은 곳입니다. 그 질문을 주셔서 감사합니다 :-)

+0

흠 네, 솔루션을 둘러 보면서 그 부분을 보았습니다. 가있는 현재의 솔루션이 더 좋다고 생각하니 아니면 다른 것을해야합니까? – Felthragar

+0

예 디렉토리는 디렉토리의 .htaccess와 공식적으로 동일합니다. 귀하의 위치 사례에서 rewriteBase 명령은 문제를 해결할 수 있습니다 (어떤 경로 접두사를 경로에서 제거해야하는지 mod-rewrite에게 말하고, rewriteBase 문서를 읽으면 Location 명령에 대한 좋은 힌트를 얻을 수 있습니다). – regilero

+0

알았어, 그걸 정리 해줘서 고마워. – Felthragar