2013-11-01 1 views
8

스크립트에 문제가 있습니다. 그것은 작동하는데 필요한 htaccess 파일로 작동하지 않습니다. 여기에 htaccess가 포함되어 있습니다. 나는 그것을 wamp localhost에 설치하려하고있다. 코드는 다음과 같습니다Wamp가있는 로컬 호스트의 .htaccess에서 RewriteEngine 500 내부 오류

#AddType x-mapp-php5 .php 
#AddHandler x-mapp-php5 .php 

RewriteEngine ON 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 
#RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA] 

Options All -Indexes 

내가 이것을 제거하면 그것은 작동 :

RewriteEngine ON 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 
#RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA] 

그러나 이런 식으로 스크립트로드를하지만, 모든 페이지 표시 오류 (404)는이 문제를 해결하는 방법이 있나요?

+0

그래서'Options All -Indexes'가 500 오류를 일으키고 있습니까? 아파치 error.log를 확인할 수 있습니까? – anubhava

답변

16

재 작성 모듈을로드하지 않은 것 같습니다. httpd.conf 파일을 찾아이 줄 (또는 비슷한)의 주석 처리가 해제되었는지 확인하십시오.

+0

이 시도했지만 동일한 오류가 발생했습니다. (우분투 16.04, 장고 1.10, WSGI) – Deleet

+0

그러나 이것은 효과가있었습니다. http://stackoverflow.com/a/18161348/3980197 이상하게도 쉘 명령을 통해 사용할 수 있지만 설정에 의해 활성화 할 수는 없습니다. – Deleet

+0

변경 후 아파치 서버를 다시 시작하는 것을 잊지 마십시오! 'sudo apachectl restart' 또는 여러분이하는 명령이 무엇이든간에. – vars

1

동일한 문제가있었습니다. 행의 주석을 해제하려면 행 앞의 #을 제거하십시오. LoadModule rewrite_module modules/mod_rewrite.so

Wamp에서 나를 위해 일했습니다. httpd.conf 파일의

디렉토리 : C : \ WAMP 당신이 아파치 재 작성 모듈이로드가 빈 \ 아파치 \ apache2.4.9의 \ conf의 \

2

확인합니다.

wamp_manager -> apache -> modules로 가서 목록에서 rewrite_module을 찾으십시오.

옆에 틱이없는 경우 클릭하십시오. 아파치가 반송 될 것입니다 (중지, 시작). 다시 시도하십시오.

필요한 모듈을로드하지 않고 rewite 엔진이 작동하지 않습니다.

0

나를 위해이 문제를 해결 한 하나의 해결책입니다. 다시 쓰기 모듈은 항상 사용 가능하고, IfModule rewrite_module에서 사용되었으며, 사용 권한이 부여되었고 .htaccess 내용은 괜찮 았지만, 모듈 재 작성을 사용하는 동안 여전히 500 오류가 발생했습니다.

In httpd.conf by default: 

This is a source of a 500 error if you try to use rewrite in .htaccess in some sub directory. 

` 
# Deny access to the entirety of your server's filesystem. You must 
# explicitly permit access to web content directories in other 
# <Directory> blocks below. 
# 

    <Directory /> 
     AllowOverride none 
     Require all denied 
    </Directory> 
`  

따라서 특정 디렉토리에서 .htaccess를 모듈 다시 쓰기와 함께 사용하고자 할 수 있습니다. 해당 디렉토리에 <directory> 블록을 추가하십시오. 디렉토리 블록을 복사하여 붙여 넣는 경우 복사하려는 블록의 의도가 적용하려는 디렉토리에 맞는지 확인해야합니다.

내 의도 때문에이 블록은 403 오류를 발생 시키지만 500 오류를 제거합니다.

<Directory "c:/Apache24/htdocs/store"> 
    AllowOverride All 
    Options None 
    Require all granted 
</Directory> 


Changing to this solved the issue: 

<Directory "c:/Apache24/htdocs/store"> 
    AllowOverride All 
    Require all granted 
</Directory> 

이 문제가 일반적으로 발생하지만 이러한 스레드에서 해결되는 경우는 드뭅니다. 단순히 다른 블록을 복사하거나, 내 블록을 입력하거나, 내가하고있는 일에 대해 이해했다면 문제가되지 않을 것입니다.

다른 사람들의 문제를 해결한다고 말할 수는 없지만 다른 사람들이 해결하고 승선 할 때 나는 싫어합니다. 내 실수를 저지른 사람들에게 이것은 답입니다.