[apache] Apache 2.2에서 mod_rewrite를 활성화하는 방법

Vista 컴퓨터에 Apache 2.2를 새로 설치했는데 mod rewrite를 제외한 모든 것이 제대로 작동합니다.

나는 주석을 해제했습니다

LoadModule rewrite_module modules/mod_rewrite.s

하지만 내 재 작성 규칙 중 어느 것도 작동하지 않습니다.

RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404

내가 사용하는 모든 규칙이 호스팅에서 작동하고 있으므로 확인해야합니다. 제 질문은 아파치 구성에 숨겨진 항목이 있습니까? 모드 재 작성을 차단할 수 있습니까?



답변

사용 mod_rewrite하려면 터미널에 다음 명령을 입력하십시오.

sudo a2enmod rewrite

다음에 apache2를 다시 시작하십시오.

sudo /etc/init.d/apache2 restart

또는

sudo service apache2 restart

또는 새로운 통합 시스템 제어 방식에 따라

sudo systemctl restart apache2

그런 다음 원하는 경우 다음 .htaccess파일을 사용할 수 있습니다 .

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

.htaccess파일 (에 배치 된 경우 DocumentRoot)은 파일이 존재하지 않는 한 모든 트래픽을 index.php파일로 리디렉션 DocumentRoot합니다.

따라서 다음 디렉토리 구조가 있고 httpdocs는 DocumentRoot

httpdocs/
    .htaccess
    index.php
    images/
        hello.png
    js/
        jquery.js
    css/
        style.css
includes/
    app/
        app.php

httpdocs에 존재하는 모든 파일은 .htaccess위 의 그림을 사용하여 요청자에게 제공 되지만 다른 모든 파일은로 리디렉션됩니다 httpdocs/index.php. 의 응용 프로그램 파일에 includes/app액세스 할 수 없습니다.


답변

내 상황에는

RewriteEngine On

.htaccess모듈에서로드 된 모듈과 함께 작동하지 않습니다.

내 문제에 대한 해결책은 vhost 항목을 편집하여 inlcude하는 것입니다.

AllowOverride all

에서 <Directory>해당 사이트에 대한 섹션을 참조하십시오.


답변

설정을 시도하십시오 : AllowOverride All.


두 번째로 가장 일반적인 문제는 mod rewrite를 활성화하지 않은 것 a2enmod rewrite입니다.


답변

위의 방법으로 작동하지 않으면 / etc / apache2 / sites-enabled / 000-default를 편집하십시오.

거의 당신이 찾을 수있는 상단에

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

변화 AllowOverride None에를AllowOverride All

이것은 나를 위해 일했다


답변

우분투에서 :

운영:

a2enmod rewrite

그리고:

service apache2 restart

mod_rewrite 이제 활성화됩니다!


답변

문제의 근본을 알고있는 경우이 문제를 해결하는 방법에는 여러 가지가 있습니다.

문제 1

첫째, mod_rewrite.c 모듈이 설치 또는 활성화되어 있지 않은 아파치에 문제가있을 수 있습니다.

이러한 이유로 다음과 같이 활성화해야합니다.

  1. 콘솔을 열고 입력하십시오 :

    sudo a2enmod rewrite

  2. 아파치 서버를 다시 시작하십시오.

    service apache2 restart

문제 2

  1. 위의 작업 외에도 작동하지 않으면 apache conf 파일 (apache2.conf, http.conf 또는 000-default 파일)에서 재정의 규칙을 변경해야 할 수도 있습니다.

  2. “Directory / var / www /”를 찾으십시오.

  3. “Override None”을 “Override All”로 변경하십시오.

문제 3

다시 쓰기 모듈을 찾을 수 없다는 오류가 표시되면 userdir 모듈이 활성화되지 않은 것입니다. 이러한 이유로 활성화해야합니다.

  1. 이것을 콘솔에 입력하십시오 :

    sudo a2enmod userdir

  2. 그런 다음 위에서 언급 한대로 여전히 활성화되지 않은 경우 다시 쓰기 모듈을 활성화하십시오.

이에 대한 자세한 내용을 보려면 다음 사이트를 방문하십시오 : http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html


답변

새로운 아파치 버전은 어떤 식 으로든 변경되었습니다. 아파치 버전이 2.4 인 경우로 가야합니다 /etc/apache2/. 라는 파일이 있습니다 apache2.conf. 이 파일을 편집해야합니다 (루트 권한이 있어야 함). 이와 같은 디렉토리 텍스트 변경

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

이제 아파치를 다시 시작하십시오.

service apache2 reload

그것이 효과가 있기를 바랍니다.