mod_rewrite가 웹 루트 디렉토리에서 작동하지 않습니다.

mod_rewrite가 웹 루트 디렉토리에서 작동하지 않습니다.

아래 Apache/mod_rewrite 구성을 사용하면 /var/www/ 루트의 CGI 스크립트에 대해 403 금지 오류가 발생합니다. 정적 파일에 대해서는 오류가 발생하지 않습니다.

루트 디렉토리(예: /var/www/random/script.cgi)의 스크립트는 오류 없이 정상적으로 작동합니다.

RewritedEngine을 끄면 CGI 스크립트는 루트 /var/www/에서도 정상적으로 작동합니다.

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
            Options FollowSymLinks
            Options SymLinksIfOwnerMatch
            AllowOverride All

            <IfModule mod_rewrite.c>
            RewriteEngine on
            </IfModule>
</Directory>
<Directory /var/www/>
    Options +ExecCGI


    Options SymLinksIfOwnerMatch
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all

            AddHandler cgi-script .cgi 

            DirectoryIndex index.cgi

</Directory>

<Files "index.cgi">
    SetHandler perl-script
    PerlHandler ModPerl::PerlRunPrefork
    Options ExecCGI
    PerlSendHeader On
    allow from all
</files>  

답변1

루트에 작동하는 스크립트를 복사해 보고 conf와 관련이 없는 경우 작동하는지 확인하세요. 실행 권한과 같은 항목을 보존하려면 cp의 -p 플래그를 사용하십시오. 예를 들어:

cp -p /var/www/random/script.cgi /var/www/script.cgi

관련 정보