2010-11-18 19 views
2

i kullandığımhtaccess kısalma url

www.site.com/laptop için

www.site.com/product/info/laptop kısaltmak istiyoruz

RewriteRule ^(.+)$ /product/info/$1 

ancak ben çalıştığımda 500 İç Sunucu Hatası

'u deneyin,

RewriteRule ^([a-zA-Z0-9_\s\'~%,:!?()_=&-]+)$ /product/info/$1 

işe yarıyor, ancak bu süreyi de desteklemek istiyorum.

RewriteRule ^([a-zA-Z0-9_\s\'~%,:!?()\._=&-]+)$ /product/info/$1 

Bana verir 500 iç sunucu hatası

sen neler olduğunu açıklayabilir misiniz? www.example.com/product/info/laptop tarayıcıyı yönlendirir

RewriteCond %{REQUEST_URI} ^/product/info/(.*)$ 
RewriteRule ^(.*)?$  /%2     [R=301,L] 

bir "Taşındı ile www.example.com/laptop için:

Eğer

+0

Neden çift tırnak? ifade [a-zA-Z0-9_ \ s \ '~% olmalıdır,:!?() \ ._ = & -] + –

cevap

0

izlemeyi deneyin ederiz Kalıcı olarak "başlık. Eğer içten uzun URL'ye işaret edecek şekilde daha kısa URL isteyen kastediyorsan

, o zaman dairesel yönlendirmeleri önlemek gerekir:

RewriteRule ^product/info/.*$ -    [L] # don't redirect again 
RewriteRule ^(.*)$   /product/info/$1 [L] # redirect everything else 

www.example.com/product/ yönlendirmek için çalışıyor duracaktır ilk satırı www.example.com/product/info/product/info/laptop adresine ve/veya dizüstü bilgisayara bilgi verin. Ayrıca vb phpmyadmin, img dışında her şeyi yönlendirmek için çalışıyoruz gibi

düzenleyin yorum dayanarak

, bu endekse görünüyor neyse? - Hepiniz biraz şimdi yeniden düzenlemek zorunda şey böyle:

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 

Ben "ürün/bilgi /(.*)" birinci yeniden yazma adına% 100 değilim. Bu işe yaramazsa, bu deneyin:

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 

Düzenleme 2

Final cevap yorumlarınıza göre:

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 
+0

Yardımlarınız için çok teşekkür ederim./Ben kısa URL içten uzun URL'sini işaret isteyen, yani benim htaccess şimdi RewriteCond% {REQUEST_URI} ^/ürün/bilgi /(.*)$ RewriteRule^ürün/bilgiler – user257867

+0

RewriteEngine benziyor. * $ - # yeniden yönlendirme RewriteRule^(.*) $/ürün/bilgi/$ 1 # her şeyi yeniden yönlendirin RewriteCond $ 1!^(index \ .php | img | phpmyadmin | images | user | wmd | FCKeditor | map | jscalendar | aurigma | xajax_js | css | js | dahil | floatbox | yardımcısı | stilleri | ajax | robotlar \ .txt | favicon \ .ico) RewriteRule^(*) $ /index.php?$1 [L] ama şimdi bu bana Sunucu hatası veriyor.! Sunucu bir iç hatayla karşılaştı ve isteğinizi tamamlayamadı. Ya sunucu aşırı yüklendi ya da bir hata oluştu .. – user257867

+0

Yukarıdaki cevabı güncelledim - bu [L] 'yi yerinde tutmanız gerekiyor, aksi takdirde başka kurallar işleme devam edecektir. –