Tulis ulang tidak berfungsi di file .htaccess
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 .htaccess
file 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:
- 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. - 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
Aturan terakhir tidak memiliki ketentuan apa pun, jadi selalu digunakan.
RewriteRule ^.*$ autodiscover.php [NC,L]
The
RewriteCond
direktif mendefinisikan kondisi aturan. Satu atau lebihRewriteCond
dapat mendahuluiRewriteRule
perintah. 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 On
sekali.Options
- Autodiscover
akan memiliki kesalahan sintaks JIKA ada fitur server seperti itu.