2012-08-26 6 views
0

가짜 다국어htaccess로 별칭 리디렉션 내가 URL을 이런 종류의 도메인 www.domain.com이 URL을

www.domain.com/my-italian-page.html (이미 다른 사람의 htaccess로 규칙을 다시 작성)

나는 사용자는 주소 표시 줄에 표시됩니다

www.domain.com/my-english-page.html

같은 가짜 다국어 URL을 생성하고자하는 rewritter url www.domain.com/my-english-page.html하지만 내가 보여주고 싶은 콘텐츠는 원래 www.domain.com/my-italian-page.html입니다.

아파치 vhost 규칙을 사용할 수 없으므로 공유 서버에 있으므로 htaccess를 통해 해결책을 찾아야합니다.

누군가 올바른 방법을 찾는데 도움이 될 수 있습니까?

감사합니다.

+0

"내 최근 휴가"에 항상 "la mia vacanza recente"(Google 번역 사용 안함)을 번역하거나 여러 기사에 대해 동적 재 작성을 원한다고 정적 재 작성을 원하십니까? – dualed

+0

더 정확하게는 전자 상거래입니다. 그래서 foreach 제품 URL을 다시 작성해야합니다. – luigi

+0

예 저는 이탈리아어에 있습니다 www.mydomain.com/burro.html 제 아이디어는 htaccess에 하나의 규칙을 작성하는 PHP 스크립트를 작성하여 가상 제품과 같은 것을 얻을 수 있습니다. 한국어 www.mydomain.com/butter .html 그래서 사용자가 www.mydomain.com/butter.html을 방문하면 주소 표시 줄에 표시된 URL이 /butter.html이되지만 콘텐츠는 원래의 burro.html에 있습니다. 분명히 둘 다 저장합니다. 데이터베이스에서 깨끗한 URL을 누른 다음 .htaccess에 규칙을 작성하는 PHP 스크립트를 호출합니다. – luigi

답변

1

영어 콘텐츠가 이탈리아어 콘텐츠를 가리키고 싶습니까? 이 다시 작성 규칙을 생성하는 PHP 스크립트가 번역을하기를 바랍니다. 각 페이지에 대해

RewriteRule ^/?english-page.html$ /italian-page.html [L] 

을 입력하면됩니다.

+0

예, PHP 스크립트는 URL을 제외한 모든 것을 번역합니다. 나는 다른 규칙이 문제를 일으키는 것 같아요. – luigi

+0

내 htaccess로'옵션 + FollowSymLinks를 -MultiViews -Indexes \t에한다 RewriteEngine \t RewriteBase/acquista/ \t한다 RewriteCond % {REQUEST_URI} ^/acquista /! (지불 | 관리자 | 제공 | 파트너)/ \t한다 RewriteCond % {REQUEST_FILENAME}! \. (gif는? | JPE g | PNG | JS | CSS | SWF | PHP | ICO)! $ \t한다 RewriteCond % {REQUEST_FILENAME} -f \t한다 RewriteCond % {REQUEST_FILENAME} -d \t RewriteCond % {REQUEST_FILENAME}! -l \t RewriteRule^/? butter-of-cacao-biologic.html $ /Burro-di-cacao-biologico.html \t RewriteRule^(. *) $ dispatcher.php [L] ' – luigi

+0

@ user1625783 문서의 htaccess 파일에 * RewriteBase/acquista /'바로 뒤에 * 규칙을 넣으시겠습니까? 뿌리는'www.domain.com/my-english-page.html'이 아니고'www.domain.com/acquista/my-english-page.html'이 아니기 때문에 –

-1

덜 복잡한 해결책이 있다고 생각합니다. 이 방법을 실제로 스크립트 (예. mydomain.tld/translate.php)

  • 에 SEO URL을

    • 이 ([하나 실제로는 .html 중에서 확장자를 사용해서는 안] mydomain/anytext.html) 모든 URL을 다시 작성

      사용할 수 있습니다 대부분의 CMS 작업입니다 $_SERVER['PATH_INFO']

      사용 내용이 올바른 페이지를 표시 할 (anytext.html를 포함한다)

    • 페이지가 존재하지 않는 경우 올바른 HTTP 응답 코드 설정 : http_response_code(...)가 (5.4 아래 PHP5의 기능이 대답의 끝을 볼 : PHP: How to send HTTP response code?)

    샘플 htaccess로 (실제로는 원래 TYPO3 설정에서 "도난"심각하게 수정)

    RewriteEngine On 
    
    # Uncomment and modify line below if your script is not in web-root 
    #RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-s 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 
    RewriteRule (.*) translate.php$1 [L] 
    

    아주 기본적인 의사 코드와 같은 (테스트하지, 구문 오류가있을 수 있습니다) 예 : 나는 당신이 다른 스크립트가 당신의 대답에서 본

    <?php 
    // using a database? you have to escape the string 
    $db = setup_db(); 
    $page = db->escape_string(basename($_SERVER['PATH_INFO'])); 
    $page = my_translate_query($page); 
    
    // no database? do something like this. 
    $trans = array('english' => 'italian', 'italian' => 'italian'); 
    $page = 'default-name-or-empty-string'; 
    if(isset($_SERVER['PATH_INFO'])) { 
        if(isset($trans[basename($_SERVER['PATH_INFO'])])) { 
         $page = $trans[$trans[basename($_SERVER['PATH_INFO'])]]; 
        } 
        else { 
         http_response_code(404); 
         exit(); 
        } 
    } 
    
    // need to redirect to another script? use this (causes reload in browser) 
    header("Location: otherscript.php/$page"); 
    // you could also include it (no reload), try something like this 
    $_SERVER['PATH_INFO'] = '/'.$page; 
    // you *may* have to modify other variables like $_SERVER['PHP_SELF'] 
    // to point to the other script 
    include('otherscript.php'); 
    ?> 
    

    -dispatcher.php을 - 수정하기를 꺼려 보인다. 그에 따라 응답을 수정했지만 가장 쉬운 방법은 영어 경로 자체를 처리하기 위해 기존 스크립트를 수정하는 것입니다.

  • 관련 문제