2013-05-16 4 views
0

htaccess에서이 문제가 발생했습니다. CodeIgniter를 사용하여 링크에서 'index.php'를 삭제했습니다.htaccess CodeIgniter의 RewriteRule

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(robots\.txt|sitemap\.xml) 

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

위대한 작품입니다.

하지만 지금, 나는이 같은 오래된 링크와 함께 이전 웹을 가지고는 :

http://www.example.com/index.php/about_us/article/70,about-us

그들은 구글에 의해 색인된다. 링크의 새로운 구조로 리디렉션하고 싶습니다.

http://www.example.com/en/about_us/70,about-us

'의 index.php'이 제거되고 확인을 먹으 렴 : 링크는 다음과 같습니다 링크로 리디렉션 위 있도록

나는, htaccess로 변경해야합니다. '링크'에는 '기사'가 항상 표시되는 것은 아니지만 일부 링크에서는 항상 표시되지만 항상 세그먼트입니다. 그리고 모두 앞에 'en'(lang)을 추가해야합니다.

어떻게하면됩니까?

답변

0

시도해보십시오.

htaccess로

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(robots\.txt|sitemap\.xml) 
RewriteRule ^en/(.*)$ /index.php/$1 [L] 

URL 라우팅에 대한 자세한 내용은 routes.php

$route["about_us/(:any)"] = "about_us/article/$1"; 

: URI Routing

+0

하지만 웹 란에는 google lang에만 존재하지 않습니다. 그래서 내가 좋아하는 두 배를 사용하여 lang을 얻을 것이다 : EN/EN/... 및 완패에 난 그냥 sgements dinamicly 생성 meny 중 하나 인 'about_us'globaly 원인을 다시 얻었다. 그래서 나는 단지 htacces로 뭔가를 신경 써야하고 조건을 다시 작성한다. – user2389059

+0

나는 당신이 원하는 것을 얻지 못한다. – rcpayan

+0

Noup. 이것은 그렇게 간단하지 않습니다. 나는 리다이렉트 될 단지 구글 링크를 whant한다. 웹에있는 연결은 좋다. 그리고 그들은 그들이 지금있는 것처럼 일하기를 꺼려한다. – user2389059

0

이것은 당신이 가까이한다 (테스트되지 않은, 당신을 위해 함께 던져) . en 세그먼트가 있는지 확인하기 위해 첫 번째 규칙을 조정할 수 있습니다. 그렇지 않으면 리디렉션 된 URL에 두 배가됩니다.

RewriteEngine On 

# Redirect any URI's starting with "index.php" to new URI 
RewriteRule ^index.php/(.*)$ http://www.example.com/en/$1 [R=301,L] 

# Route URI's to index.php front controller 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 !^(robots\.txt|sitemap\.xml) 
RewriteRule ^(.*)$ index.php/$1 [QSA,L]