2013-05-16 5 views
0

J'ai eu ce problème avec htaccess. J'utilise CodeIgniter et j'ai supprimé 'index.php' du lien:htaccess RewriteRule dans CodeIgniter

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

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

Cela fonctionne très bien.

Mais maintenant, j'ai un web avec des liens plus anciens comme celui-ci:

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

Ils sont indexées par Google. Je voudrais les rediriger vers une nouvelle structure de lien.

Je dois changer htaccess, alors lien ci-dessus redirige vers un lien qui ressemble à ceci:

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

Le 'index.php' est retiré et thats ok. L '' article 'n'apparaît pas toujours dans le lien, mais dans certains liens, mais il s'agit toujours d'un segment. Et je dois ajouter 'en' (lang) devant tout.

Comment est-ce que je peux faire ceci?

Répondre

0

essayez ces;

.htaccess

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

routes.php

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

pour plus d'informations sur le routage url: URI Routing

+0

mais dans le web lang est là seulement dans google lang n'est pas présent. donc je vais obtenir le double lang comme: fr/fr/... et déroutes i obtenu réécrire la cause globaly 'about_us' est juste un des Meny généré dinamicly sgements. Donc, je ne suis pas quelque chose avec des conditions de htacces et de réécrire i gues – user2389059

+0

je ne comprends pas ce que vous voulez – rcpayan

+0

Noup. Ce n'est pas si simple. Je ne veux que rediriger les liens google. Les liens dans le web sont ok et ils peuvent fonctionner comme ils le sont maintenant. – user2389059

0

Cela devrait vous approcher (non testé, juste jeté ensemble pour vous) . Vous pouvez ajuster la première règle pour vérifier si le segment en existe, car si c'est le cas, vous obtiendrez des doubles dans les URL redirigées.

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]