[php] mod_rewrite가 서버에서 활성화되었는지 확인하는 방법은 무엇입니까?

현재 저는 lightspeed 서버 와 함께 호스팅을 사용하고 있습니다. 호스팅 mod_rewrite이 활성화되어 있지만 스크립트가 작동하지 않습니다. URL에 액세스하려고 할 때마다 404-not found page가 반환 됩니다.

Apache로 실행되는 다른 서버에 동일한 코드를 넣었습니다. 저쪽에서 작동합니다. 내가 추측 그래서, 그것은이다 .htaccessmod_rewrite문제를.

그러나 호스팅 지원은 여전히 ​​mod_rewrite가 켜져 있다고 주장하므로 실제로 활성화되었는지 여부를 어떻게 확인할 수 있는지 알고 싶습니다.

을 (를) 확인하려고 phpinfo()했지만 운이 없습니다. 찾을 수 없습니다. mod_rewrite그들이 사용하고 있기 때문 lightspeed입니까?

확인할 방법이 있습니까? 제발 도와주세요. 감사합니다.

참고 :.htaccess코드는

Options -Indexes

<IfModule mod_rewrite.c>
DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
</IfModule>

나도 이렇게 해봤 어

DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

그러나 같은 결과.



답변

명령 줄에서 다음을 입력합니다.

sudo a2enmod 재 작성

다시 쓰기 모드가 이미 활성화되어있는 경우이를 알려줍니다!


답변

  1. mod_rewrite 모듈이 활성화되어 있는지 확인하려면 WAMP 서버의 루트 폴더에 새 php 파일을 만듭니다. 다음을 입력

    phpinfo();

  2. 브라우저에서 생성 된 파일에 액세스합니다.

  3. CtrlF검색을 엽니 다. ‘mod_rewrite’를 검색합니다. 활성화 된 경우 ‘로드 된 모듈’로 표시됩니다.

  4. 그렇지 않은 경우 httpd.conf (Apache Config 파일)를 열고 다음 줄을 찾습니다.

    #LoadModule rewrite_module modules/mod_rewrite.so

  5. 시작 부분에서 파운드 ( ‘#’) 기호를 제거하고이 파일을 저장하십시오.

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

  7. 브라우저에서 동일한 PHP 파일에 액세스하십시오.

  8. ‘mod_rewrite’를 다시 검색하십시오. 지금 찾을 수있을 것입니다.


답변

가상 호스트 구성 파일을 사용하는 경우 해당 가상 호스트에 AllowOverride All다음과 같은 지시문이 있는지 확인하십시오 .

<VirtualHost *:80>
        ...
    <Directory "directory/of/your/.htaccess">
        AllowOverride All
    </Directory>
</VirtualHost>

기본적으로 이것은 모든 .htaccess 지시문의 처리를 허용합니다.


답변

apache_get_modules ()가 인식되지 않거나 phpinfo (); .htaccess 파일에 해당 행을 추가하여 모드 재 작성을 테스트 해보십시오.

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

그리고 mod_rewrite.php :

<?php echo "Mod_rewrite is activated!"; ?>


답변

콘솔:

<VirtualHost *:80>
        ...
    <Directory ...>
        AllowOverride All
    </Directory>
</VirtualHost>

sudo a2enmod rewrite
sudo service apache2 restart


답변

만약

in_array('mod_rewrite', apache_get_modules())

반환 true하면 mod-rewrite가 활성화됩니다.


답변

PHP의 perdefined apache_get_modules()함수는 활성화 된 모듈 목록을 반환합니다. mod_rewrite이 활성화되어 있는지 확인하려면 서버에서 다음 스크립트를 실행할 수 있습니다.

<?php
print_r(apache_get_modules());
?>

위의 예가 실패하면 .htaccess파일을 사용하여 mod-rewrite를 확인할 수 있습니다.

작성 htaccess문서 루트에 파일을하고 다음의 RewriteRule의 추가 :

RewriteEngine on

RewriteRule ^helloWorld/?$ /index.php [NC,L]

이제 http://example.com/HelloWorld를 방문하십시오 . 내부적으로 사이트의 /index.php 페이지로 전달됩니다 . 그렇지 않으면 mod-rewrite가 비활성화 된 경우 500 Internel 서버 오류가 발생합니다.

도움이 되었기를 바랍니다.