2017-02-16 1 views
0

내가 모드 - 재 작성을 사용하여모 재 작성 - URL

https://example.com/contact

https://example.com/public/contact.php (실제 경로)

에서 내 URL을 변경했습니다를 다시 작성합니다.

contact은 단지 자리 표시 자일 뿐이므로 public 디렉토리의 모든 파일에서 작동해야합니다. /home 또는 /login

처럼 나는이와 파일 extionsion을 제거 할 수 있었다 :

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
+0

이 두 개 이상의 수준 URL, 즉 처리하지 않습니다 "변화"를 의미합니까? '/public/contact.php'는 실제로 파일의 실제 경로이며 https://example.com/contact를 통해 액세스하려고합니다. –

+0

예 @EduardoEscobar –

답변

1
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/([^\./]+)/?$ 
RewriteRule .* /public/%1.php [L] 

참고 : 당신이 무엇을 https://example.com/contact/form

+0

아니요, 아파치 서버의 오류 로그를 살펴보고 404의 이유를 확인하십시오. –

+0

고맙습니다! 하지만 나는 또 다른 작은 문제가 있습니다.'example.com'을 방문했을 때 나는'index.php'를 보여주고 싶습니다. –

+0

이 규칙은'https : // example.com'이나'https : // example.com/index.php'과 충돌하지 않습니다. –