2010-10-20 23 views
8

Google'da başarısız oldum ve burada arama yanıtını bulamadım. Üzgünüm, ben htaccess bir yeniyim ve gerçekten garip sözdizimi var ve öğrenmesi çok zor!Çerez değerine göre htaccess yönlendirmesi nasıl yapılır

Sen burada yapmaya çalışıyorum görebilirsiniz ...

RewriteEngine on 
RewriteCond %{HTTP_COOKIE} ^.*user_id=(\d+).*$ [NC] 
RewriteRule .* http://localhost/mysite/cache/$1 [R=301,L] 
RewriteRule .* http://localhost/mysite/cache/guest [R=301,L] 

Ben maksimum hızda ve her kullanıcı için sayfaları önbelleğe ediyorum. Bir çerezle giriş yaptıkları takdirde uygun HTML önbellek klasörüne yönlendirmek istiyorum, aksi takdirde misafir önbelleğini yüklemek istiyorum.

Şu anda bir infi-loop'a gider. [R = ... öğesini kaldırırsam dahili sunucu hatası alırım.

Lütfen yardım edin! Teşekkür ederim!!!

cevap

8

Bu id=1234 gibi bir çerez için çalışır:

senin sorunun Şimdi
RewriteEngine on 
RewriteCond %{HTTP_COOKIE} ^id=([0-9]*)$ [NC] 
RewriteRule .* http://localhost/mysite/cache/%1 [R=301,L] 
RewriteRule .* http://localhost/mysite/cache/guest [R=301,L] 

: senin htaccess size yeniden yazmak sayfa için geçerli değildir emin olun! Belki senin sonsuz döngüye sebebi var

http://localhost/mysite/cache/%1 

tekrar kullanılacak

/mysite/.htaccess Örneğin, .htaccess yatıyor eğer. Bunu çözmek için, htaccess kurallarının alt dizinlere uygulanmadığından emin olun veya önbellek için başka bir dizin kullanın.

+0

Hangi alt dizinlerin uygulanacağını nasıl anlatacağımı nereden öğrenebilirim? Teşekkür ederim. – BinaryGal

+0

Sonunda bir web sayfasını yanıtla birlikte buldum: http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html#menu0-el14 Hile bir "-" işaretini kullanmaktır. İşte işe yarayan çözümüm: RewriteRule ^. + $ - [L] – BinaryGal

1

İşte başkasının bu problemleri gidermek için çözüm:

Henüz çerez parçasını test edilmemiş olmasına rağmen
RewriteEngine on 
RewriteRule ^.+$ - [L] 
RewriteCond %{HTTP_COOKIE} ^.*user_id=(\d+).*$ [NC] 
RewriteRule .* http://localhost/mysite/$1 [R=301,L] 
RewriteRule .* http://localhost/mysite/guest [R=301,L] 

- Ben orada çok daha fazla sorun olacaktır eminim! Ama geri kalanını test ettim ve işe yarıyor! (Bu yay, infi-döngüye gitmez ardından konuk gider ve!)

harika bir gün var! 8)

+3

user_id'nin mevcut olmaması durumunda yeniden yönlendirmek isterseniz, şunu yazarım: 'RewriteCond% {HTTP_COOKIE}! ^. * User_id = (\ d +). * $ [NC] ' –

İlgili konular