2013-02-28 4 views
1

현재이 코드를 사용하여 아파치 웹 서버에서 파일의 .php 확장자를 제거하고 있습니다.htaccess는 페이지가 존재하지 않을 때 500을 발생시킵니다.

Options -Multiviews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php [L] 

두 가지 질문 :

1 : 누군가가 존재하지 않는 페이지를 요청하면, 내 웹 서버 대신 어떻게이 문제를 해결 할 수있는 404의 500 오류를 반환?

2 : 누군가가 .php 확장자를 요청하면 어떻게 강제로 404를 사용할 수 있습니까?

미리 감사드립니다.

+3

정보 오류 메시지는 error_log를 확인하십시오. –

답변

0

example.com/about-us.php는

RewriteEngine on 
RewriteRule ^(.*)\.html$ $1.php 
0

이 완료 대답하지 example.com/about-us.html로 이동합니다.

htaccess 기능을 완전히 이해하지 못한다면 어떻게 RewriteEngine이 작동하는지 설명하려고합니다.

Apache 서버가 브라우저에서 '실제가 아닌'URL을 수신합니다. 그런 다음 .htaccess를 읽고 해당 파일의 정보를 사용하여 '실제가 아닌'URL을 서버의 실제 파일을 가리키는 '실제'URL로 변환합니다.

오류 세부 정보는 항상 apache (httpd) 오류 로그에 저장됩니다. 당신은 그것을 읽어야하고, 당신에게 아무 것도 알려주지 않는다면 여기에 붙여 넣으십시오 - 우리가 도와 줄 것입니다.

강제 오류 404는이 경우 좋지 않습니다. 그것을 오버라이드하지 말고 오류를 수정해야합니다.

1

존재하지 않는 페이지에 대한 500 오류가 발생합니다. mod_rewrite가 요청을 다시 작성하려고 무한 루프에 들어가고 결국 종료되기 때문입니다.

은 PHP 확장이 실제로 존재로 확인 파일을 만들기 위해이 같은 규칙을 다시 작성

:

Options -Multiviews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php [L] 

RewriteCond %{REQUEST_FILENAME}.php -f 라인이 재 작성은 "file.php"가 존재하는 경우에만 발생하는 원인이됩니다.

관련 문제