2016-10-06 2 views
0

PHP 7.0으로 응용 프로그램을 개발 중이며 MVC로 경로를 구현 중입니다. 내 루트 폴더 ('/')는 'public'디렉토리입니다. 'localhost'주소에 액세스 할 때 사용할 수있는 경로가있는 index.php로 리디렉션됩니다. 하지만 '로컬 호스트/접촉'과 같은 다른 경로를 액세스하기 위해 다른 URL을 시도 할 때 서버는 항목을 발견하고이 메시지를 제공하지 않습니다Apache2가 경로로 작동하지 않습니다. PHP

Not Found 

The requested URL /contact was not found on this server. 

나는 확신을 나의 서버 설정에 문제의 (apache2 on Linux mint 18). 내 친구의 PC가 정상적으로 작동하기 때문에. 나는 대중 디렉토리 내에 너무 htaccess로 파일을 사용하고 있습니다 :

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

서버가 index.php를 실행하지 않는 나에게 보인다 경로에 액세스하려고합니다. URL에 대한 경로가 있는지 여부를 알기 위해 어떻게 index.php를 강제로 실행할 수 있습니까?

여기 내 apache2 설정 파일을 따르십시오.

http://pastebin.com/yD4RpfK8

http://pastebin.com/2mgSjWWV

는 여전히 newbee 그리고 난 서버 구성에서 거의 이해합니다. 누군가 제게 빛을 줄 수 있습니까? 감사!

+0

'RewriteRule ^. * $ - [NC, L]'해야합니까? –

+0

선생님이 내게 그 .htaccess를 주셨습니다. 웹에서 RewriteRule ^. * $ - [NC, L]은 파일 시스템의 모든 URL에 대해 RewriteConds를 적용합니다. –

답변

3

이 :

RewriteRule ^.*$ - [NC,L] 

그것은 모든 것을 일치하고,이 [L] 태그이기 때문에, 다른의 RewriteRules 그래서 모두 여기에 중지를 재 작성, 평가되지 않습니다. 즉, example.com/foo에 대한 요청이이 규칙과 일치하고 다시 쓰기가 중지되며 파일 시스템에서 리터럴 foo 파일이 검색됩니다 (존재하지 않음).

그리고,이 하나의 규칙이 다음 라인, 거기 경우에도

RewriteRule ^.*$ index.php [NC,L] 

은 작동하지 않을 것입니다. 모든 URL이 일치하지만 관련 데이터를 제거하므로 example.com/foo에 대한 요청은 example.com/index.php에 대한 요청과 동일합니다. 어떤 쿼리 매개 변수가 전달되지 않을 것이다

당신의 논리가 더 같아야합니다. 번역 이러한 종류의 할 것

RewriteRule ^(.*)$ index.php?args=$1 [QSA,L] 

: 시험의 철저한 배터리 후

example.com/foo  -> example.com/index.php?args=foo 
example.com/bar?baz -> example.com/index.php?args=bar&baz 
+0

고마워,하지만 문제가 발견 됐어. 내 apache2는 .htaccess를 제대로 읽지 못했습니다. 내 옛 .htacess는 분명히 작동했다. 시간 내 주셔서 감사합니다. 제발 많이 도와주세요! :) –

0

을 나는 발견 해결책. htaccess 파일과 코드는 괜찮 았습니다. 문제는 내 서버가 .htaccess를 읽지 못하는 것입니다. apache2.conf를 편집하고 'AllowOverride All'을 설정하면 마침내 작동합니다.

이 페이지 https://docs.bolt.cm/3.0/howto/making-sure-htaccess-works 저를 해결하는 데 도움이됩니다!