les opérations suivantes:
RewriteCond %{REQUEST_URI} ^/product/info/(.*)$
RewriteRule ^(.*)?$ /%2 [R=301,L]
qui redirige le navigateur de www.example.com/product/info/laptop à www.example.com/laptop~~V~~3rd avec un « Déplacé En-tête "en permanence".
Si vous souhaitez vous dire l'URL plus courte pour pointer vers l'URL plus interne, vous devez éviter les redirections circulaires:
RewriteRule ^product/info/.*$ - [L] # don't redirect again
RewriteRule ^(.*)$ /product/info/$1 [L] # redirect everything else
La première ligne cessera d'essayer de rediriger www.example.com/product/ info/portable à www.example.com/product/info/product/info/laptop, et ainsi de suite.
Modifier
Sur la base de votre commentaire, il semble que vous aussi essayer de rediriger tout sauf img, phpmyadmin, etc, pour indexer tout - Vous devez réorganiser tout un peu maintenant, quelque chose comme ceci:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/(index\.php|img|phpmyadmin|images|user|wmd|FCKeditor|map|jscalendar|aurigma|xajax_js|css|js|include|floatbox|helper|styles|ajax|robots\.txt|favicon\.ico|product/info/(.*))
RewriteRule ^(.*)$ - [L] # don't redirect these
RewriteRule ^(.*)$ /product/info/$1 # redirect everything else
Je ne suis pas à 100% sur le « produit/informations /(.*) » partie de la première réécriture. Si cela ne fonctionne pas, essayez ceci:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/(index\.php|img|phpmyadmin|images|user|wmd|FCKeditor|map|jscalendar|aurigma|xajax_js|css|js|include|floatbox|helper|styles|ajax|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ - [L] # don't redirect these
RewriteRule ^product/info/.*$ - [L] # don't redirect again
RewriteRule ^(.*)$ /product/info/$1 [L] # redirect everything else
Edit 2
réponse finale en fonction de votre commentaire:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/(index\.php|img|phpmyadmin|images|user|wmd|FCKeditor|map|jscalendar|aurigma|xajax_js|css|js|include|floatbox|helper|styles|ajax|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ - [L] # don't redirect these
# pass controllers to index.php
RewriteCond %{REQUEST_URI} ^/(home|browse|calendar|star|member|enter|product)
RewriteRule ^(.*)$ /index.php?$1 [L]
# pass other things than controllers to /index.php?/product/info/$1
RewriteRule ^(.*)$ /index.php?/product/info/$1 [L] # redirect everything else
Pourquoi les guillemets doubles? l'expression devrait être [a-zA-Z0-9_ \ s \ '~%,:!?() \ ._ = & -] + –