2011-08-21 7 views
0

최근에 .htaccess와 URL 재 작성으로 도왔으며 최근까지는 잘 작동했습니다. 기본적으로 모든 URL을 index.php로 리디렉션 한 다음 URL을 처리하고 올바른 내용을 표시합니다. 그래서 만약 내가 작동하고 올바르게 표시 http://www.example.com/blog/index.html 입력하십시오. 하지만 http://example.com/blog/을 입력하면 404 오류가 발생합니다 ... 아래의 경우 .htaccess 코드와 PHP 코드를 모두 입력해야합니다..htaccess가 특정 URL을 리디렉션하지 않습니다.

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*\.html)$ index.php/$1/ [L] 

과 PHP :

if(($_SERVER['REQUEST_URI'] == '/') || ($_SERVER['REQUEST_URI'] == '/index.php') || ($_SERVER['REQUEST_URI'] == '/index.html')) 
    { 
     //Looks like we are accessing the root 
     $this->controller = $this->config['default']; 
    } else { 
     $this->uri = explode('/', str_replace('.html', '', $_SERVER['REQUEST_URI'])); 
     $this->controller = $this->uri[1]; 

     if(isset($this->uri[2])) 
     { 
      $this->action = $this->uri[2]; 
     } 
    } 

어떤 도움을 주시면 감사하겠습니다, 감사합니다!

+0

같이해야합니까? –

+0

죄송합니다, 아파치에 의해 생성되었습니다 –

+1

스크립트에서 'http : // www.example.com/blog/index.html'과'index.php'라는 2 개의 다른 파일을 호출하는 것처럼 보입니다. –

답변

2

귀하의 .htaccess 그것은 서버 또는 PHP에서 ** 404 오류 ** 인이

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php/$1/ [L] 
+0

\ .html 비트를 추가 했으므로 .html을 URL에 추가 할 수 있습니다. –

+1

그러면 http : // example.com/blog /'는 Apache 기본 라우팅을 사용하고 완전히 재 작성하지 않을 것입니다. 404가 나오면 인덱스 파일이'/ blog'에 실제로 존재하지 않고'Indexes'가 비활성화되었다는 것을 의미합니다. – adlawson

+1

당신이하고 싶은 것이 멋진 기능처럼 들리지만 3 개의 다른 URL을 가진 동일한 콘텐츠는 좋은 순위에별로 유용하지 않습니다. –

관련 문제