RewriteRule Apache, php

4 Cevap php

Ben onlar kullanıcı ayrıntılarını görüntüler, hangi yazın http://example.com/user/user-name http://example.com/user/user-name zaman kullanıcıyı yönlendirmek mümkün olmak istiyorum

This is what I am using but it gives me errors

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^.*$ /user/ [R]

The error which firefox gives is

Loop yönlendir

Firefox has detected that the server is redirecting the request for this address in a way that will never complete. The browser has stopped trying to retrieve the requested item. The site is redirecting the request in a way that will never complete.

  • Eğer özürlü veya engellenen çerezler bu site tarafından gerekli mi?
  • NOT: sitenin çerezlerini kabul sorunu çözmezse, bilgisayarınızı olası bir sunucu yapılandırma sorunu olup.

Teşekkürler

4 Cevap

Sen gerçekten bir yeniden yönlendirme döngüsü var. Sen domain.com/user/user-name (AYNI URL) domain.com/user/user-name gitmek için çalışıyoruz. Ne olur:

  1. Kullanıcı girişler domain.com/user/user-name.
  2. Kullanıcı domain.com/user/user-name (aynı yere) yönlendirilir.
  3. Kullanıcı domain.com/user/user-name (aynı yere) yeniden yönlendirilir.
  4. Kullanıcı domain.com/user/user-name (aynı yere) yeniden yönlendirilir.
  5. Tekrarlayın reklam nauseum ...

Belki domain.com/user/user-name domain.com/users.php?u=user veya bir şey yönlendirmek gerekiyordu?

Siz / user / kendisini de dahil olmak üzere everything yönlendiriliyorsunuz.

Edit: Every request runs through the same set of rewrites, and since your regex of ^.*$ matches you'll redirect /user/ to /user/ again. The browser is just helping you out by stopping the loop after a few attempts on the same URL.

Eğer / b / foo / a / foo yönlendirmek için arıyorsanız, sizin gibi bir şey gerekir:

RewriteRule ^ / a / (. *) $ / B / $ 1 [R]

.. Ancak kaynak ve hedef sizin ilk örnekte olduğu gibi örtüşmeyen olması gerekir, ya da sonsuz bir yeniden yönlendirme döngüsü alırsınız.

Bu iki URL'ler aynı değildir?

Edit: ben cevap zaman, soru sadece ihtiyaç değil, hata belirtilen

Diğerleri zaten söylediğim gibi, RewriteRule ve böylece sonsuz bir döngüye yol (/user/ dahil) herhangi bir URI yolunu eşleşir.

Bunu önlemek için bu URI yolu dışlamak zorunda:

# either
RewriteRule !^/user/$ /user/ [R]
# or
RewriteCond %{REQUEST_URI} !^/user/$
RewriteRule ^ /user/ [R]

Bu kurallar /user/ için ^/user/$ ile uyumlu değildir, her URI yolunu yönlendiremez. Eğer bir. Htaccess dosyasında bu kuralı kullanmak istiyorsanız, RewriteRule direktifi desen önde gelen çizgi çıkarmak zorunda (yani sadece ^user/$).