Apache/2.4.18(Ubuntu) 서버는 .htaccess를 통해 특정 폴더에 대해 RewriteEngine 모드를 사용할 수 없습니다.

Apache/2.4.18(Ubuntu) 서버는 .htaccess를 통해 특정 폴더에 대해 RewriteEngine 모드를 사용할 수 없습니다.

저는 Slim을 사용하여 Web API 프로젝트 작업을 할 때 .htaccess루트 웹 아래에 있는 API 폴더를 사용합니다. /v1내 OS는 Ubuntu 16.04이며 이 폴더에만 .htaccess를 적용하고 Apache/2.4.18싶습니다 . /v1파일 .htaccess은 다음과 같습니다.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

/v1폴더의 파일에 액세스하려고 하면 404응답을 받습니다. 예를 들어, 액세스하려고 하면

http://localhost/project/v1/loadSomething

응답은 404입니다.

Not Found
The requested URL project/v1/loadSomething was not found on this server.
Apache/2.4.18 (Ubuntu) Server at localhost Port 80

다음과 같이 변경하기 위해 편집을 시도했습니다.

<Directory "/var/www/html">
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

하지만 이 경우 응답은 500입니다.

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

로그는 다음과 같습니다.

[Sat Aug 10 21:16:11.356667 2019] [core:alert] [pid 4699] [client 127.0.0.1:33852] /var/www/html/project/v1/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
[Sat Aug 10 21:20:21.783996 2019] [core:alert] [pid 4700] [client 127.0.0.1:34374] /var/www/html/project/v1/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
[Sat Aug 10 21:20:40.368584 2019] [core:alert] [pid 4701] [client 127.0.0.1:34376] /var/www/html/project/v1/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

누구든지 나를 도와줄 수 있나요?

답변1

  1. Apache 2.4 지시문부터 더 이상 사용되지 않으며 새로운 지시문으로 대체되었습니다 Order.AllowDenyRequire통사론.

    바꾸다

    Order allow,deny
    Allow from all
    

    그리고

    Require all granted 
    

    귀하의 구성에서. 바라보다https://httpd.apache.org/docs/current/upgrading.html

  2. 것 같다모드 재작성귀하의 서버에서는 활성화되어 있지 않습니다. 다음 명령을 사용하여 모듈을 활성화한 다음( a2enmod심볼릭 링크가 생성됨) 서버를 다시 시작합니다./etc/apache2/mods-enabled/rewrite.load../mods-available/rewrite.load

    sudo a2enmod rewrite
    sudo service apache2 restart
    

    활성화된 모든 모듈을 나열하려면 다음 명령을 플래그 a2query와 함께 사용할 수 있습니다 .-m

    a2query -m
    

관련 정보