Apache 2.4.7에서 htaccess를 활성화하는 올바른 방법입니까?

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를 넣어야 했는지는 잘 모르겠습니다. 이것이 올바른 방법인가요? 아니면 컴퓨터가 어떻게든 폭발할까요?

답변1

tl;dr

예, 올바른 방법입니다.
하지만 더 많아지려면의미론적.htaccess: 예, 디렉터리 의 모든 지시문을 재정의 할 수 있는 올바른 방법입니다 /var/www.


당신이 알아낸 대로,AllowOverride섹션에서만 허용됩니다 Directory.

귀하의 예를 사용하여 :

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

/var/www이는 모든 구성이 해당 하위 디렉터리와 모든 하위 디렉터리 에서 (재귀적으로) 재정의될 수 있음을 Apache에게 알리는 것입니다 .


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

<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재정의 할 수만 있습니다 .AllowDenyOrder

참고: Apache 2.4(13.10 이상에서 기본적으로 사용 가능)부터 Allow, DenyOrder지시문은 이라는 단일 지시문으로 대체되었습니다 Require.

답변2

먼저 다음 명령을 사용하여 다시 쓰기를 활성화합니다.

sudo a2enmod rewrite

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

sudo service apache2 restart

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

/etc/apache2/sites-available

이름이 지정된 파일을 편집 default하고 . 이 변경을 수행해야 하는 두 줄이 있습니다.AllowOverride noneAllowOverride All

.htaccess이렇게 하면 서버 VPS에서 작동 하게 됩니다 .

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

답변3

제 경우에는 다음과 같이 작동했습니다.
다음 줄을 추가해야 했습니다.

Order allow, deny
Allow from all

따라서 다음과 같습니다.

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

답변4

이 튜토리얼에서 제가 겪은 일반적인 문제는 default.conf 파일이 없다는 것입니다.

/etc/apache2/sites-available

바꾸는 곳을 찾을 수 있었는데 여기 apache2.conf 파일이더군요.

/etc/apache2/apache2.conf

이것이 좋은 생각인지는 확실하지 않지만 나에게는 효과가 있었고 현재 환경에서는 안전합니다.

관련 정보