2017-12-14 2 views
1

get 정보를 포맷하려면 다음 .htaccess가 있습니다.Htaccess가 PHP를 두 번 실행하도록합니다

htaccess로 : 나는이 규칙을 적용 할 때

RewriteCond %{HTTP_HOST} ^(www\.)?csbuilder\.io [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ index.php?params=$1 [NC,L] 

문제는이 두 번 PHP 스크립트를 실행하기 시작! 한 조각의 코드가 두 번 처리되기 때문에 그 점을 알았습니다.

그 스크립트는 데이터베이스에 임의의 토큰을 설정하고 데이터베이스에 페이지를 다시로드 할 때마다 브라우저에 전송되는 다른 토큰을 보게됩니다.

.htaccess 규칙을 제거하면 정상적으로 작동합니다.

아이디어가 있으십니까?


는 해결 :

기존 규칙은 모든 것을 matchs. 깨진 이미지가 있다면 그 이미지와 일치하여 index.php을 실행하십시오.

그래서 이미지와 다른 파일을 일치시킬 필요가 없습니다. 그래서 정규식을 따라 가면서이 문제를 해결했습니다.

RewriteRule ^([\w-/])+$ index.php?params=$1 [NC,L] 

감사합니다. 모든 것이 index.php, 라우팅 엔진의 많은 일반적인 패턴을 통과하기 위해 다시 작성되어 있기 때문에

+2

달성하려는 목표는 무엇입니까? 왜냐하면'.htaccess'를 제거하면 * 잘 작동하기 때문에, 나는 대답하기를 꺼려합니다 : 단지'.htaccess'를 제거하십시오. –

+4

이 규칙만으로는 하나의 요청 당 두 번'index.php '가 실행되지 않습니다. 일어날 수있는 것은'index.php'는 브라우저가'index.php'를 호출하는 다른 요청을 서버로 보내도록하는 리소스 링크 (예 : Javascript, CSS, images)를 출력합니다. – bishop

+0

존재하지 않는 이미지 파일이있어서 index.php를 통해 실행하고 있습니다. .htaccess를 변경하여 이미지가 아니란 요청을 확인합니다. 감사합니다 – Simon

답변

2

, 당신은 다른 경로에 대해 여러 실행을 참조하므로 액세스 로그에 매우주의를 지불 할 수 있습니다. 가장 일반적인 범죄자는 묻는 메시지없이 /favicon.ico을 묻는 브라우저입니다.

+1

존재하지 않는 이미지 파일이있어서 index.php를 통해 실행하고 있습니다. .htaccess를 변경하여 이미지가 아니란 요청을 확인합니다. 감사합니다 – Simon

+0

그래, 당신은'\. (gif | png | jpe? g | ico)'로 일반적인 이미지 확장을 무시할 수 있습니다. – tadman

+1

누락 된 이미지를 일종의 누락 된 이미지 자리 표시 자 또는 단일 픽셀 이미지로 라우팅하는 것이 고려해야 할 사항 중 하나입니다. 이렇게하면 깨진 ''태그에 대해 실수로 HTML을 제공하는 일반적인 문제를 피할 수 있습니다. – tadman