2013-03-19 3 views
2

"/php 확장자를 제거하면 어떻게 /test.php이 될 수 있습니까?"와 같은 많은 질문이 있습니다. 단, 사용자가 직접 테스트를 거치면 이됩니다. PHP는 확장 기능을 대체하지 않습니다. 그래서/.php를 /로 바꾸고 싶습니다. 당신은 (다른 규칙에 의해 다시 작성됩니다) 대신 URI의 실제 요청에 대한 검사를 할 필요가.htaccess에서 .php 확장자를 강제로 제거하십시오.

RewriteEngine on 

RewriteRule stuff\.php /other_stuff/ [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^([^/]+)/$ $1.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,L] 
+0

당신이 할 일은 **/파일'에'/ file.php' /'에서 ** 사용자를 리디렉션하는 것입니다. –

+0

리디렉션을하면 무한 루프가 발생합니다./ – JonasT

+0

생각해 보면 같은 문제가 있습니다. 나는 그저 그때 포기했다. 그래서 행운을 빌어 요 :) –

답변

3

: 여기 내가 사용하고있어 .htacces의 일부입니다. %{THE_REQUEST} 변수는 다시 쓰기 엔진 중에 변경되지 않습니다. 바로 RewriteEngine 지시 아래이 규칙을 추가하십시오 :

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^/]+)\.php(\?|\ |$) 
RewriteRule^/%2/ [L,R=301] 
관련 문제