Tulis ulang tidak berfungsi di file .htaccess

Jun 21 2018

Pembaruan 6/26/18: Saya menghargai bahwa ini mungkin duplikat dari Redirect, Ubah URL atau Redirect HTTP ke HTTPS di Apache - Segala Sesuatu yang Anda Ingin Ketahui Tentang Aturan Mod_Rewrite tetapi Takut untuk Bertanya Namun, saya menyebutkan dalam aslinya posting yang saya kunjungi posting itu dan menemukan situs penguji dari posting itu. Saya memang membaca posting itu, dan sementara saya masih pemula untuk menulis ulang aturan, saya rasa ini bukan duplikat; namun saya bisa saja salah.

Saya mencoba menyiapkan aturan penulisan ulang baru dalam .htaccessfile saya (di bawah)

    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>

Saya menemukan penguji online ini dalam posting ini: Alihkan, Ubah URL, atau Alihkan HTTP ke HTTPS di Apache - Semua yang Ingin Anda Ketahui Tentang Aturan Mod_Rewrite tetapi Takut Bertanya

Tautan ke penguji: .htaccess tester

Ketika saya menjalankan konfigurasi saya, saya mendapatkan info keluaran debugging berikut untuk .htaccess

Pertanyaan saya:

  1. Bagaimana cara memastikan bahwa index.php tidak diarahkan secara salah berdasarkan output dari ' info debugging untuk .htaccess '?
    Dalam output dari 'info debugging untuk .htaccess', index.php ditambahkan ke autodiscover.xml - yang BUKAN apa yang saya perlukan.
  2. Apa yang salah dengan konfigurasi saya yang menyebabkannya gagal terkait bagian Autodiscover? ' Info debugging untuk .htaccess ' menyatakan bahwa kondisi tersebut terpenuhi hanya karena 'OR' dalam konfigurasi saya.

Terima kasih kepada siapa pun yang melihat ini dan menawarkan bantuan atau penjelasan apa pun !! :-)

Jawaban

1 EsaJokinen Jun 22 2018 at 14:04

Aturan terakhir tidak memiliki ketentuan apa pun, jadi selalu digunakan.

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

The RewriteConddirektif mendefinisikan kondisi aturan. Satu atau lebih RewriteConddapat mendahului RewriteRuleperintah. Aturan berikut hanya akan digunakan jika status URI saat ini cocok dengan polanya, dan jika ketentuan ini terpenuhi.

Oleh karena itu, semua ketentuan Anda terkait dengan aturan sebelumnya, sebagai gantinya:

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

Juga:

  • Anda hanya perlu RewriteEngine Onsekali.

  • Options- Autodiscover akan memiliki kesalahan sintaks JIKA ada fitur server seperti itu.