![mod_rewrite Apache 모듈을 로드할 수 없습니다.](https://rvso.com/image/697384/mod_rewrite%20Apache%20%EB%AA%A8%EB%93%88%EC%9D%84%20%EB%A1%9C%EB%93%9C%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
mod_rewrite
모듈을 사용하려고 하는데 Apache24 server
로드할 수 없습니다. 이 주제에 관해 많은 질문이 있다는 것을 알고 있으며 모든 질문을 살펴봤지만 아무것도 작동하지 않는 것 같습니다. 이것이 내가 지금까지 따라온 단계입니다 ---
CHANGED
httpd.conf
파일이 다음과 같이 변경되었습니다
. 주석 처리되지 않음LoadModule rewrite_module modules/mod_rewrite.so
b.AllowOverride None
로 변경AllowOverride All
아파치 서버를 다시 시작했습니다
명령 프롬프트 command 를 사용하여 로드된 모듈을 확인했습니다
httpd -M
. mod_rewrite 모듈이 로드된 것을 볼 수 있습니다. 아래에 이미지를 첨부하겠습니다.
하지만 이 모든 단계를 수행한 후에는 mod_rewrite가 phpinfo
.
위 그림에서 볼 수 있듯이 mod_rewrite 로드 모듈이 없습니다. 또한 와일드 해킹으로 파일을 사용하여 URL을 다시 작성해 보았지만 .htaccess
작동하지 않습니다. .htaccess
해당 파일을 루트 디렉터리에 넣었음에도 불구하고 Apache는 파일을 무시하는 것 같습니다 .
Note: I am running `PHP` as an apache module
Using `WAMP` stack
Using `localhost` as server
URL 재작성 목적으로 이 모듈이 꼭 필요합니다. 이 모듈을 로드하는 다른 방법을 제안해 주실 수 있나요?
편집하다
.htaccess
대답에 따르면 모듈이 로드되었고 모듈에 의존하지 않으며 에 의존하지 않는다는 것을 알 수 있으므로 가상 호스트에서 URL을 다시 쓰려고 했습니다. 그러나 info.php
여전히 리디렉션되지 않습니다. Virtual host
아래 설정 을 추가하고 있습니다 ---
<VirtualHost *:80>
<Directory "/Apache24/htdocs">
Options FollowSymLinks
AllowOverride All
DirectoryIndex index.html index.php
</Directory>
ServerName localhost
DocumentRoot "/Apache24/htdocs"
ErrorLog "/Apache24/logs/error.log"
CustomLog "/Apache24/logs/access.log" combined
<directory "/Apache24/htdocs">
<IfModule rewrite_module>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
<IfModule rewrite_module>
RewriteRule ^working.php fun.html
</IfModule>
</directory>
# Rewrite Rules #####################
RewriteEngine On
RewriteRule ^working.php fun.html
# end Rewrite Rules #################
</VirtualHost>
working.php
위의 코드는 실행하려고 할 때 리디렉션되지 않습니다 fun.html
. 그것은 간단하게 말합니다:
요청한 URL /working.php를 이 서버에서 찾을 수 없습니다.
답변1
- mod_rewrite가 작동하는 데 .htaccess 또는 AllowOverride가 필요하지 않습니다. 서버 관리자이므로 사용하지 마십시오. 생활이 복잡해지고 서버에 불필요한 오버헤드가 발생하기 때문입니다.
모듈을 로드하는 것 외에 필요한 유일한 지시문은 다음과 같습니다.
RewriteEngine 켜짐
추가의:
- 필요한 전부라면 간단한 리디렉션을 위해 (mod_alias에서) Redirect/RedirectMatch를 고려해 보세요.
- 가까운 장래에 발생할 수 있는 악몽과 머리카락 손실을 방지하려면 가상 호스트 컨텍스트에서 리디렉션/재작성을 정의하는 것을 고려하세요.
답변2
링크된 스크린샷에서 서버 루트(파일 시스템 경로)는 로 보이지만 서버 구성 지시문에는 C:/Apache24
에 대한 참조가 없습니다 . C:
전체 파일 시스템 경로를 참조해야 합니다. 예:
<Directory "C:/Apache24/htdocs">
RewriteRule ^working.php fun.html
VirtualHost(컨테이너 외부 <Directory>
)에서 직접 사용되는 이 지시어는 절대 일치하지 않습니다. VirtualHost(또는 서버 구성) 컨텍스트에서 사용될 때 mod_rewrite는 전체 URL 경로와 일치합니다.포함슬래시 접두사. 이는 mod_rewrite를 디렉토리/ .htaccess
컨텍스트로 사용할 때(슬래시 접두사가 제외된 경우)와 중요한 차이점입니다.