저는 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
응답을 받습니다. 예를 들어, 액세스하려고 하면
응답은 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
Apache 2.4 지시문부터 더 이상 사용되지 않으며 새로운 지시문으로 대체되었습니다
Order
.Allow
Deny
Require
통사론.바꾸다
Order allow,deny Allow from all
그리고
Require all granted
귀하의 구성에서. 바라보다https://httpd.apache.org/docs/current/upgrading.html
것 같다모드 재작성귀하의 서버에서는 활성화되어 있지 않습니다. 다음 명령을 사용하여 모듈을 활성화한 다음(
a2enmod
심볼릭 링크가 생성됨) 서버를 다시 시작합니다./etc/apache2/mods-enabled/rewrite.load
../mods-available/rewrite.load
sudo a2enmod rewrite sudo service apache2 restart
활성화된 모든 모듈을 나열하려면 다음 명령을 플래그
a2query
와 함께 사용할 수 있습니다 .-m
a2query -m