Saya tidak bisa membuat mod_rewrite bekerja di Lion. Saya mengembangkan sejumlah situs web secara lokal, di ~ / Situs, menggunakan file .htaccess. Saya di 10.7.3 dan saya belum menyentuh file konfigurasi apa pun kecuali untuk mengaktifkan PHP di httpd.conf (yang berfungsi).
Saya tahu setidaknya ada 2 pertanyaan tentang ini di sini, tetapi solusi yang terperinci di sana tidak berhasil. Juga tidak ada solusi lain yang saya temukan di web. Saya harus melakukan sesuatu yang bodoh atau mengabaikan sesuatu, atau saya mungkin akan menjadi gila, tetapi itu tidak berhasil.
Saya sudah mencoba semua hal yang biasa:
Di
/private/etc/apache2/users/<myusername>.conf
, ubahAllowOverride None
keAllowOverride All
dan mulai ulang server webSelain itu, dalam
/private/etc/apache2/httpd.conf
, ubah setiap / semua kejadianAllowOverride None
menjadiAllowOverride All
- Saya sudah mencobanya di semua tempat di mana arahan ini ditemukanCoba pada dasarnya semua kemungkinan kombinasi nilai untuk
Options
garis di atas / di bawahAllowOverride
garis, termasuk nilai-nilai:Indexes MultiViews FollowSymLinks All
Selalu me-restart server web setelah perubahan seperti itu, tentu saja. Tidak ada yang berhasil. Semua url saya yang bersih tidak berfungsi; Saya mendapatkan 404 - tidak ditemukan. Log kesalahan Apache hanya memberi saya kesalahan "File tidak ada:". Jadi sepertinya modul mod_rewrite bahkan tidak berfungsi sama sekali.
Saya memastikan bahwa mod_rewrite dimuat di httpd.conf, yang mana; begitu secara default pada instalasi Lion.
Yang gila adalah semuanya telah bekerja dengan sempurna - sampai saya bermigrasi ke mesin baru yang menjalankan Lion. Artinya, saya mengesampingkan kesalahan dalam file .htaccess saya karena saya tahu itu berfungsi sebelumnya. Juga, jika itu adalah kesalahan dalam. Tetapi ini tidak terjadi.
Apakah saya mengabaikan sesuatu? Apakah saya harus mengubah pengaturan konfigurasi di tempat lain? Apakah saya harus mengubah konfigurasi PHP? Mengapa instruksinya (seperti Cara mengaktifkan mod_rewrite di MacOSX Lion dan membuat mod_rewrite bekerja di Mac OS X ) bekerja untuk orang lain tetapi tidak untuk saya? :)
Saya sudah membuang-buang waktu untuk hal ini. Bantuan apapun akan sangat dihargai.
sumber
Jawaban:
Anda harus memastikan bahwa di /etc/apache2/users/username.conf Anda memiliki yang berikut:
FollowSymlinks dan AllowOverride sangat penting di sini. Meskipun Anda mengisyaratkan keduanya dalam pertanyaan Anda, mungkin Anda tidak mengonfigurasi ini dengan benar bersama-sama.
Pastikan di httpd.conf /private/etc/apache2/extra/httpd-userdir.conf juga disertakan. Secara default.
Setelah modifikasi apa pun, mulai ulang server web agar perubahan diterapkan.
Jika Anda masih mengalami masalah, mungkin ada masalah dengan aturan penulisan ulang Anda yang sebenarnya. Apakah Anda menggunakannya dalam konteks .htaccess sebelumnya juga? Perhatikan bahwa dalam .htaccess, aturan penulisan ulang regex dicocokkan dengan permintaan URI tanpa garis miring utama dan selalu relatif terhadap direktori tempat .htaccess berada , sedangkan dalam httpd.conf global, URI harus cocok dengan garis miring yang terkemuka dan relatif terhadap root web. Karena diasumsikan Anda memiliki .htaccess di subdirektori ~ / Sites, aturan penulisan ulang Anda mungkin berperilaku berbeda dari ketika .htaccess berada di root web host (virtual).
Untuk men-debug mod_rewrite Anda dapat mengaktifkan penulisan ulang logging. Anda harus mengaktifkannya di /etc/apache2/httpd.conf:
sumber
Menambahkan Opsi + FollowSymLinks bekerja dengan baik untuk saya
sumber
Options +FollowSymLinks
? Saya hanya menambahkan baris itu berfungsi untuk sayaSaya mengalami masalah yang sama ketika file .htaccess saya diabaikan sepenuhnya ketika berada di dalam subfolder di dalam direktori ~ / Sites saya di bawah VirtualHost yang telah diatur dengan benar.
Setelah menghabiskan satu jam terakhir bermain-main dengan file konfigurasi yang berbeda dan mengatur AllowOverride All di berbagai tempat, saya akhirnya menemukan bahwa file .htaccess, sementara itu tampak seperti file .htaccess di Finder, sebenarnya file .htaccess.txt dengan ekstensi disembunyikan.
Untuk memeriksa dan mengubah file .htaccess Anda, klik kanan padanya dan pilih Dapatkan Info lalu pastikan untuk menghapus ekstensi utama apa pun dari akhir, seperti yang saya punya:
Dan sekarang berhasil!
sumber
Di bawah ini. Entri htaccess memperbaiki untuk saya
sumber
Menempatkan .htaccess ke / Library / WebServer / Documents dan buka "localhost /"; untuk mengujinya, berfungsi seperti yang diharapkan. Itu tidak berfungsi di "~ / Situs". Terima kasih Niels Heidenreich untuk ini!
sumber
Saat Anda mengetik: / Users / username / app_name
The / merujuk ke root dari server web:
"localhost /"
Jika Anda menggunakan / ~ nama pengguna / app_name dalam penulisan ulang Anda, itu akan berfungsi.
sumber
/
selalu path absolut untuk Apache, lihat definisi root server web di http.conf (<Directory "/Library/WebServer/Documents">
)