mod_rewrite Apache 모듈을 로드할 수 없습니다.

mod_rewrite Apache 모듈을 로드할 수 없습니다.

mod_rewrite모듈을 사용하려고 하는데 Apache24 server로드할 수 없습니다. 이 주제에 관해 많은 질문이 있다는 것을 알고 있으며 모든 질문을 살펴봤지만 아무것도 작동하지 않는 것 같습니다. 이것이 내가 지금까지 따라온 단계입니다 ---

  1. CHANGED httpd.conf파일이 다음과 같이 변경되었습니다
    . 주석 처리되지 않음 LoadModule rewrite_module modules/mod_rewrite.so
    b. AllowOverride None로 변경AllowOverride All

  2. 아파치 서버를 다시 시작했습니다

  3. 명령 프롬프트 command 를 사용하여 로드된 모듈을 확인했습니다 httpd -M. mod_rewrite 모듈이 로드된 것을 볼 수 있습니다. 아래에 이미지를 첨부하겠습니다.

내 명령 프롬프트의 스크린샷

하지만 이 모든 단계를 수행한 후에는 mod_rewrite가 phpinfo.

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

  1. mod_rewrite가 작동하는 데 .htaccess 또는 AllowOverride가 필요하지 않습니다. 서버 관리자이므로 사용하지 마십시오. 생활이 복잡해지고 서버에 불필요한 오버헤드가 발생하기 때문입니다.
  2. 모듈을 로드하는 것 외에 필요한 유일한 지시문은 다음과 같습니다.

    RewriteEngine 켜짐

추가의:

  1. 필요한 전부라면 간단한 리디렉션을 위해 (mod_alias에서) Redirect/RedirectMatch를 고려해 보세요.
  2. 가까운 장래에 발생할 수 있는 악몽과 머리카락 손실을 방지하려면 가상 호스트 컨텍스트에서 리디렉션/재작성을 정의하는 것을 고려하세요.

답변2

링크된 스크린샷에서 서버 루트(파일 시스템 경로)는 로 보이지만 서버 구성 지시문에는 C:/Apache24에 대한 참조가 없습니다 . C:전체 파일 시스템 경로를 참조해야 합니다. 예:

<Directory "C:/Apache24/htdocs">
RewriteRule   ^working.php   fun.html

VirtualHost(컨테이너 외부 <Directory>)에서 직접 사용되는 이 지시어는 절대 일치하지 않습니다. VirtualHost(또는 서버 구성) 컨텍스트에서 사용될 때 mod_rewrite는 전체 URL 경로와 일치합니다.포함슬래시 접두사. 이는 mod_rewrite를 디렉토리/ .htaccess컨텍스트로 사용할 때(슬래시 접두사가 제외된 경우)와 중요한 차이점입니다.

관련 정보