.Htaccess dosyasında çalışmayan yeniden yazma

Jun 21 2018

Güncelleme 6/26/18: Bunun Apache'de Yönlendirme, URL'leri Değiştirme veya HTTP'yi HTTPS'ye Yönlendirme - Mod_Rewrite Kuralları Hakkında Bilmek İstediğiniz Ancak Sormaktan Korktuğunuz Her Şey'in bir kopyası olabileceğini anlıyorum, ancak orijinal belgemde bahsetmiştim o gönderiye gittiğimi ve o gönderiden test sitesini bulduğumu gönder. Bu yazıyı okudum ve kuralları yeniden yazma konusunda hala acemi olduğum halde, bunun kopya olduğunu düşünmüyorum; ancak yanılıyor olabilirim.

Dosyam içinde yeni bir yeniden yazma kuralı oluşturmaya çalışıyorum .htaccess(aşağıda)

    SetEnv HTTPS on

<IfModule mod_rewrite.c>
    RewriteEngine On
Options -Indexes
    # Send would-be 404 requests to Craft
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
    RewriteRule (.+) index.php?p=$1 [QSA]
Options - Autodiscover
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} -s [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule ^.*$ - [NC,L]
   RewriteRule ^.*$ autodiscover.php [NC,L]
</IfModule>

Bu çevrimiçi test ediciyi şu gönderide buldum: Yeniden Yönlendir, URL'leri Değiştir veya HTTP'yi Apache'de HTTPS'ye Yönlendir - Mod_Rewrite Kuralları Hakkında Bilmek İstediğiniz Ancak Sormaktan Korktuğunuz Her Şey

Test cihazına bağlantı: .htaccess test cihazı

Yapılandırmamı çalıştırdığımda, .htaccess için aşağıdaki çıktı hata ayıklama bilgisini aldım

Benim sorum:

  1. İndex.php'nin ' .htaccess için hata ayıklama bilgisi ' çıktısına göre yanlış yönlendirilmediğinden nasıl emin olabilirim ?
    '.Htaccess için hata ayıklama bilgisi' çıktısında, index.php autodiscover.xml'ye ekleniyor - ki bu benim olması gereken şey DEĞİL.
  2. Yapılandırmamda, Otomatik Bulma bölümü ile ilgili olarak başarısız olmasına neden olan yanlış nedir? ' .Htaccess için hata ayıklama bilgisi ' koşulun yalnızca yapılandırmamdaki 'VEYA' nedeniyle karşılandığını belirtir.

Bunu gören ve her türlü yardım veya açıklama sunan herkese teşekkür ederiz !! :-)

Yanıtlar

1 EsaJokinen Jun 22 2018 at 14:04

Son kuralın herhangi bir koşulu olmadığı için her zaman kullanılır.

RewriteRule ^.*$ autodiscover.php [NC,L]

RewriteCondYönergesi bir kural koşulu tanımlar. Bir veya daha fazlası RewriteCondbir RewriteRuledirektifin önünde olabilir . Aşağıdaki kural daha sonra yalnızca URI'nin mevcut durumu kalıbına uyuyorsa ve bu koşullar karşılanırsa kullanılır.

Bu nedenle, tüm koşullarınız bunun yerine önceki kuralla ilgilidir:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

Ayrıca:

  • Sadece bir RewriteEngine Onkez ihtiyacınız var .

  • Options- Autodiscover Böyle bir sunucu özelliği olsaydı sözdizimi hatası olurdu.