2010-06-20 3 views
1

아래의 규칙은 here에서 가져 와서 약간 수정하여 PHP 파일 확장명을 제거한 후 슬래시를 추가합니다. 모 드 다시 쓰기로 리디렉션

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)/$ $1.php 

는 그래서 URL Domain.com/file.php는 Domain.com/file/ 같은

모양 그리고 한 내가 링크가 직접 을 입력으로 잘 작동 Domain.com/file/하지만 내 모든 PHP 파일 링크를 유지하고 싶습니다. 그래서 나는 누군가가 가는 경우가 Domain.com/file/에 Domain.com/file.php

누군가를 리디렉션 할 그러나 (내가 제대로이 일을 해요 경우) 내가 리디렉션 할 때

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)/$ $1.php [R=301,L] 

하지만 리디렉션되지 않습니다. 내가 제대로에서 리디렉션하고있어 경우 :(

는 잘 모르겠어요 또는 단순히이 작업을 수행 할 수 아니에요합니다. 어떤 조언은 굉장합니다.

답변

0

나는 그것이 htaccess로 작동하는 방법을 완전히 확실하지 않다 하지만 당신은 언제나 PHP를 사용할 수 이 파일을 확인하고 그것을 포함하는 모든 페이지의 상단에 :.

<?php  
    $page = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); 
    if(substr($page, -4)=='.php'){ 
    $pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
     $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80") { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"]; 
    } 
    header("Location: $pageURL/" + substr($page, 0, -4) ); 
    } 
?> 

편집 : 당신은 사용자가 주소 표시 줄에 보는 것을 걱정하지 않는 경우, 그냥 [R]을 추가하십시오 (= 301, L 부분을 제거하십시오)

+0

답변 해 주셔서 감사합니다! ...하지만 정말로 .htaccess를 사용하고 싶습니다. 왜냐하면 모든 파일을 편집 할 필요가 없기 때문입니다. (리디렉션하려는 모든 유일한 이유입니다. 모든 링크를 변경할 수도 있습니다) – SuperPaperSam

+0

편집 된 응답보기. 그것은 테스트되지 않았습니다. –

+0

그것은 작동하지 않습니다 (나는 R = 301, L을 사용하기 전에 그것을 시도했습니다) 그리고 다시 시도했습니다. – SuperPaperSam

관련 문제