현재 저는 lightspeed 서버 와 함께 호스팅을 사용하고 있습니다. 호스팅 mod_rewrite
이 활성화되어 있지만 스크립트가 작동하지 않습니다. URL에 액세스하려고 할 때마다 404-not found page가 반환 됩니다.
Apache로 실행되는 다른 서버에 동일한 코드를 넣었습니다. 저쪽에서 작동합니다. 내가 추측 그래서, 그것은이다 .htaccess
과 mod_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 재 작성
다시 쓰기 모드가 이미 활성화되어있는 경우이를 알려줍니다!
답변
-
mod_rewrite 모듈이 활성화되어 있는지 확인하려면 WAMP 서버의 루트 폴더에 새 php 파일을 만듭니다. 다음을 입력
phpinfo();
-
브라우저에서 생성 된 파일에 액세스합니다.
-
CtrlF검색을 엽니 다. ‘mod_rewrite’를 검색합니다. 활성화 된 경우 ‘로드 된 모듈’로 표시됩니다.
-
그렇지 않은 경우 httpd.conf (Apache Config 파일)를 열고 다음 줄을 찾습니다.
#LoadModule rewrite_module modules/mod_rewrite.so
-
시작 부분에서 파운드 ( ‘#’) 기호를 제거하고이 파일을 저장하십시오.
-
아파치 서버를 다시 시작하십시오.
-
브라우저에서 동일한 PHP 파일에 액세스하십시오.
-
‘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 서버 오류가 발생합니다.
도움이 되었기를 바랍니다.