2011-09-21 2 views
0

Drupal에서 어떤 페이지의 URL 표시 줄에 .php를 추가하면 404 메시지가 나타납니다. 깨끗한 URL이 활성화되었습니다. 이 페이지는 분명히 .php이지만 .htaccess는 사용자가 URL 표시 줄의 URL 확장자를 조작 할 수 없도록합니다. .htaccess를 사용하면 어떻게 할 수 있습니까? 현재 파일 확장자가 생략되었지만 해당 기능을 추가하려고합니다. 고맙습니다.
또한이 질문은 Drupal과 관련이 없습니다. 나는 Drupal에 대해서만 언급했다.허용되지 않는 URL에 404를 표시하도록 .htaccess를 설정하는 방법은 무엇입니까?

+3

나는 다음과 같이 다시 쓰겠습니다 : 사용자가 존재하지 않는 URL을 쓰지 못하게하는 방법? 그리고 당신은 대답을 압니다. –

+0

@OZ_ 독서 질문 본문은 일반적으로 질문을 이해하는 데 도움이됩니다. –

+1

Drupal URL은 실제 PHP 파일을 가리 키지 않으며 요청을 처리하는'index.php '로 리디렉션되는 가상 URL입니다. 따라서 URL에'.php '를 추가하면 404가 제공되기 때문에 URL이 존재하지 않기 때문입니다. –

답변

0

나는 드루팔 (Drupal을 사용하지 않는다. 그러나 일반적인 PHP 애플리케이션에서는 모든 요청이 일부 유효성 검사를 수행하고 오류시 404를 던집니다.
easy-peasy

2

파일에 PHP 코드가 포함되어 있기 때문에 확장자가 .php 일 필요는 없습니다. 인터넷을 통해 파일에 액세스 할 때 더욱 그렇습니다. 드루팔 그것이 page 일치하는 경로에 대한 데이터베이스입니다 확인합니다 그러자

당신이 http://mysite.com/page을 요청하고 드루팔의 같은 .htaccess을 사용하고

는 요청이 index.php?q=page에 전달됩니다. 발견하면 해당 페이지의 내용을 표시하고, 맞지 않으면 404를 제공합니다.

PHP 확장명으로 모든 페이지에 액세스 할 수있게하려면 추가 규칙을 추가 할 수 있습니다. PHP 파일이 물리적으로하지 않는 모든 요청에서 .php을 제거하는 .htaccess 파일이 존재 :

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\.php $1 [NC] 

곰을 염두에 사실 (사이트의 방문자 제로 여분의 가치를 추가하는 것이 비록 그들이 같은 파일 확장자를 기억해야 뿐만 아니라 페이지 경로까지), 사용중인 서버 측 기술을 정확히 노출시켜 잠재적 인 공격자가 자신을 위해 수행 한 작업을 일부 수행하게됩니다.

희망이 있습니다.

1

더 자세히 설명해주세요. 어떻게 콘텐츠를 기존 페이지로 리디렉션 할 수 있습니까? 그 일이 일반적인 관행/전형적인 방법입니까?

예 대부분의 프레임 워크와 CMS에서 사용되는 매우 일반적인 방법입니다.

원리는 간단하다 : 당신이 설정하여 .htaccess 실제 파일이나 디렉토리를 일치하지 않는 모든 요청은 프론트 컨트롤러, 응용 프로그램의 루트 디렉터리에 일반적으로 index.php로 리디렉션 될 수 있도록. 이 프론트 컨트롤러는 URL을 분석하고 필요한 작업을 호출하여 요청을 처리합니다.

이렇게하면 다시 쓰기 규칙을 하나만 최소화 할 수 있으며 맞춤형 404 페이지를 제공 할 수 있습니다.

관련 문제