내가 .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>
, 난 여전히 궁금 해요 왜 < 위치 /> 작동하지 않았다, 아무도 생각을 가지고?
정수 값이 필요하다면'.' 대신'\ d'를 사용하십시오. – Gumbo
저는 문자와 숫자가 모두 필요하다고 생각합니다. 345는 단순한 예제 값이었습니다. 그래도 고마워. – Felthragar