이것은 Apache 2.4.7에서 htaccess를 활성화하는 올바른 방법입니까? 파일이 없습니다. 새 기본 파일이

“htaccess를 활성화하는 방법”의 거의 모든 솔루션에서 / etc / apache2 / sites-available / default 파일을 편집해야한다고 말합니다. 그러나 Apache 2.4.7에는 그러한 파일이 없습니다.

새 기본 파일이 000-default.conf라는 곳을 읽었습니다. 그래서 그 것을 편집하고 줄을 추가하려고했습니다.

AllowOverride All

그러나 Apache2가 올바르게 다시 시작되지 않아 오류가 발생했습니다. apache2 문서에서 AllowOverride가 <Directory>섹션 에서만 허용된다는 것을 알았습니다 . 그런 다음 이것을 추가하려고했습니다.

<Directory "/var/www">
AllowOverride All
</Directory>

그리고 이것은 효과가있는 것 같습니다. 그러나 / var / www를 거기에 넣었는지 확실하지 않습니다. 올바른 방법입니까, 아니면 어떻게 든 컴퓨터가 고장 날까요?



답변

tl; dr

네 맞습니다.
그러나 더 의미 론적으로 : 예, 디렉토리의 .htaccess모든 지시문을 무시할 수있는 올바른 방법 /var/www입니다.


알다시피 섹션 AllowOverride아래에서만 허용됩니다 Directory.

귀하의 예를 사용하여 :

<Directory "/var/www">
    AllowOverride All
</Directory>

이것은 아파치에게 모든 구성이 모든 /var/www하위 디렉토리에서 재귀 적 으로 재정의 될 수 있음을 말해줍니다 .


더 나은 예를 위해 가상 호스트에 다음 구성이 있다고 가정하십시오.

<Directory "/var/www">
    AllowOverride All
</Directory>

<Directory "/var/www/uploads">
    AllowOverride Limit
</Directory>

그리고 다음 디렉토리 구조 :

var/
    www/
        .htaccess
        uploads/
            .htaccess
            a/
                .htaccess
            b/
                .htaccess
        code/
            .htaccess
            c/
                .htaccess
            d/
                .htaccess

내가 한 것은 .htaccess디렉토리의 모든 하위 디렉토리에 디렉토리를 만드는 것 입니다 /var/www.
일반적으로 그렇게해서는 안되지만 이것은 예제를위한 것입니다.

디렉토리 구조와 구성을 비교하면 디렉토리 및 해당 서브 디렉토리를 제외한 폴더 및 서브 디렉토리 .htaccess의 모든 파일이 모든 유형의 지시문을 대체 할 수 있습니다./var/www/var/www/uploads

그러나 /var/www/uploads해당 서브 디렉토리는 .htaccess파일을 사용 하여 Allow, DenyOrder지시문 을 대체 할 수 있습니다 .

참고 :이 (13.10+에서 기본적으로 사용할 수있는) 아파치 2.4의로서 Allow, DenyOrder지시의 이름은 하나의 지침으로 대체되었다 Require.


답변

먼저이 명령을 사용하여 다시 쓰기를 활성화하십시오.

sudo a2enmod rewrite

그런 다음 apache2를 다시 시작하십시오.

sudo service apache2 restart

그런 다음 sites-available폴더 로 이동하십시오 .

/etc/apache2/sites-available

이름이 지정된 파일을 편집 default하고로 변경 AllowOverride none하십시오 AllowOverride All. 이 변경이 필요한 두 줄이 있습니다.

이것은 .htaccess서버 VPS에서 작동합니다.

이것은 Ubuntu 12.04.5 VPS에서 작동했습니다.


답변

필자의 경우
다음과 같이 작동했습니다 . 다음 줄을 추가해야했습니다.

Order allow, deny
Allow from all

따라서 다음과 같습니다.

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

답변

다음은 기본 구성을 변경하지 않고 Apache 2.4에서 htaccess를 활성화하는 방법입니다.

cat <<EOF> /etc/apache2/conf-available/allow-override.conf
<Directory "/var/www">
    AllowOverride all
</Directory>
EOF

a2enconf allow-override
service apache2 reload