2012-09-17 3 views
1

누군가 도움을 줄 수 있기를 바랍니다. htaccess에 대해 잘 알려지지 않은 것에 대해 사과드립니다. 나는 여러 가지 옵션을 찾는데 몇 시간을 보냈지 만 성공하지는 못했습니다. 기본 URL이 양식 domain.com/index.php/page-namehtaccess redirection www가 아닌 ​​www가 CMS와 충돌합니다

에 나는 CMS를 사용하고

은의 index.php를 잃고 단지 domain.com/을 가지고 관리자 설정이 아래 htaccess로 항목을 만듭니다 페이지 이름 :

<IfModule mod_rewrite.c> 
<IfModule mod_env.c> 
SetEnv gp_rewrite gJjsF6q 
</IfModule> 
RewriteEngine On 
RewriteBase "/" 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
<IfModule mod_cache.c> 
RewriteRule /?(.*) "/index.php/$1" [L] 
</IfModule> 
<IfModule !mod_cache.c> 
RewriteRule . "/index.php" [L] 
</IfModule> 
</IfModule> 

핵심 canonicalisation 돌봐하려면, www가 지금까지 실패에 비 www가 URL에 대한 요청을 리디렉션을 시도하고있다. 거의 모든 것이 어떤 종류의 서버 오류를 생성합니다. 500, 또는 문서가 여기로 이동되었습니다. 또한 ErrorDocument를 사용하여 요청을 처리하는 동안 403 Forbidden 오류가 발생했습니다.

www/www가 아닌 ​​www를 다시 써 넣으면 (적어도 아래 도메인) 도메인 기능이 있지만 리디렉션은 루트에서만 작동합니다. 다른 모든 페이지는 /index.php/를 다시 쓰지 않고 domain.com/index.php/page-name 형식으로 페이지를 다시 보냅니다.

<IfModule mod_rewrite.c> 
<IfModule mod_env.c> 
SetEnv gp_rewrite gJjsF6q 
</IfModule> 
RewriteEngine On 
RewriteBase "/" 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
<IfModule mod_cache.c> 
RewriteRule /?(.*) "/index.php/$1" [L] 
</IfModule> 
<IfModule !mod_cache.c> 
RewriteRule . "/index.php" [L] 
</IfModule> 
<Ifmodule mod_rewrite.c> 
rewritecond %{http_host} ^domain.com [nc] 
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc] 
</Ifmodule> 
</IfModule> 

리디렉션보다 본질적으로 나쁩니다. 누구든지 핵심 CMS 요구 사항을 유지 관리 할 수있는 방법과 www/non www 해결 방법을 제안하면 매우 환영 할 것입니다.

답변

0

당신은 위의 리디렉션 규칙을 규칙의 나머지 부분을 을 둘 필요하고 L 플래그 포함 :

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteCond %{http_host} ^domain.com [NC] 
    RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301,NC] 

    <IfModule mod_env.c> 
     SetEnv gp_rewrite gJjsF6q 
    </IfModule> 

    RewriteBase "/" 
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    <IfModule mod_cache.c> 
     RewriteRule /?(.*) "/index.php/$1" [L] 
    </IfModule> 
    <IfModule !mod_cache.c> 
     RewriteRule . "/index.php" [L] 
    </IfModule> 
</IfModule> 
+0

안녕 존 린 당신의 도움이 많이 감사합니다. 논리적으로 보였습니다. 나는 몇 가지 다른 장소에서뿐만 아니라 도메인 다시 작성을 시도했습니다. 누락 된 [L] 및 다른 순서 재 지정이 차이를 만든 것으로 보입니다. 모두 일하고 있습니다, 다시 한번 감사드립니다. – user1678778

관련 문제