~ / Lion on Sites'taki .htaccess dosyalarını kullanarak URL yeniden yazmayı (mod_rewrite) etkinleştirin


13

Mod_rewrite'ı Lion üzerinde çalışmak için alamıyorum. .Htaccess dosyalarını kullanarak yerel olarak ~ / Sites'ta bir dizi web sitesi geliştiriyorum. Ben 10.7.3 üzerinde ve httpd.conf (hangi çalışır) PHP etkinleştirmek dışında herhangi bir yapılandırma dosyalarına dokunmadım.

Burada bununla ilgili en az 2 soru olduğunu biliyorum, ancak burada ayrıntıları verilen çözümler işe yaramıyor. Web'de bulduğum diğer çözümler de. Aptalca bir şey yapmalıyım ya da bir şeye bakmam gerek, yoksa muhtemelen deliriyorum, ama işe yaramıyor.

Bütün olağan şeyleri denedim:

  1. İçinde /private/etc/apache2/users/<myusername>.conf, web sunucusuna AllowOverride Nonegeçin AllowOverride Allve web sunucusunu yeniden başlatın

  2. Ayrıca, içinde /private/etc/apache2/httpd.confherhangi / tüm olay (lar) değiştirmek AllowOverride Noneiçin AllowOverride Allbu direktifler bulunan nerede tüm çeşitli yerlerde denedim -

  3. Temel olarak, değerler dahil olmak üzere Optionsçizginin üstünde / altında, olası tüm değer kombinasyonlarını deneyin AllowOverride:Indexes MultiViews FollowSymLinks All

Elbette böyle bir değişiklikten sonra web sunucusunu her zaman yeniden başlatmak. Bunların hiçbiri işe yaramıyor. Tüm temiz URL'lerim işe yaramıyor; 404 tane aldım - bulunamadı. Apache'nin hata günlüğü bana sadece "Dosya yok:" hataları veriyor. Bu yüzden mod_rewrite modülü hiç çalışmıyor gibi görünüyor.

Mod_rewrite olan httpd.conf yüklü olduğundan emin oldum; Lion kurulumunda varsayılan olarak böyledir.

Çılgınca şey, Lion çalıştıran yeni bir makineye taşınana kadar her şeyin mükemmel şekilde çalışmasıydı. Yani, daha önce çalıştığını bildiğim için .htaccess dosyalarımdaki bir hatayı dışlıyorum. Ayrıca, .htaccess'te bir hata olsaydı, Apache'nin error_log'undaki mod_rewrite modülünden bir tür hata mesajı alırdım, en azından modülün kendisinin çağrıldığını söyledim. Ancak bu gerçekleşmiyor.

Bir şey mi görüyorum? Yapılandırma ayarlarını başka bir yerde değiştirmem gerekiyor mu? PHP'nin yapılandırmasını değiştirmek zorunda mıyım? Neden talimatlar ( MacOSX Lion'da mod_rewrite nasıl etkinleştirilir ve Mac OS X üzerinde mod_rewrite nasıl çalıştırılır ) başkaları için çalışıyor ama benim için değil? :)

Bunu zaten saatlerce boşa harcadım. Herhangi bir yardım çok takdir edilecektir.


BTW, MAMP kullanmak istemiyorum. Daha önce MAMP kullandım ve zaten sistemimde olan MySQL ile iyi oynamadı. Bu bir baş ağrısını başka bir baş ağrısıyla değiştirir, bu yüzden teşekkürler :)
Niels Heidenreich

BTW Standart OS X Lion'dayım, Lion Server değil.
Niels Heidenreich

Bu soruya cevap vermiyor, ancak web geliştirici yapmak için Mac'inizin yerel ortamıyla güreşmeye bir alternatif, sanal makine yapılandırmalarını kolayca ayarlayıp yönetmenizi sağlayan Vagrant gibi bir şey kullanmaktır .
Dan J

Yanıtlar:


12

/Etc/apache2/users/username.conf dosyasında aşağıdakilere sahip olduğunuzdan emin olmalısınız:

<Directory "/Users/username/Sites/">
    Options Indexes MultiViews FollowSymlinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

FollowSymlinks ve AllowOverride burada önemlidir. Sorunuzda ikisini de ima ederken, belki bunları birlikte doğru şekilde yapılandırmadınız.

Httpd.conf /private/etc/apache2/extra/httpd-userdir.conf dosyasında da yer aldığından emin olun. Varsayılan olarak.

Herhangi bir değişiklikten sonra, değişikliklerin etkili olması için web sunucusunu yeniden başlatın.

Hala sorun yaşıyorsanız, gerçek yeniden yazma kurallarınızla ilgili bir sorun olabilir. Bunları daha önce .htaccess bağlamında mı kullanıyordunuz? Bir .htaccess dosyasında, yeniden yazma kuralı normal ifadesinin, ön eğik çizgi olmadan ve her zaman .htaccess'in bulunduğu dizine göre bir istek URI'sı ile eşleştirildiğini , buna karşılık genel bir httpd.conf dosyasında URI'nin ön eğik çizgi ile eşleşmesi ve Web köküne göre. Varsayılan olarak .htaccess'inizi ~ / Sites alt dizininde bulunduğunuzdan, yeniden yazma kurallarınız .htaccess'in (sanal) bir ana bilgisayarın web kökünde bulunduğu zamandan farklı davranabileceğini unutmayın.

Mod_rewrite hata ayıklamak için yeniden yazma günlük kaydını etkinleştirebilirsiniz. Bunu /etc/apache2/httpd.conf dosyasında etkinleştirmelisiniz:

RewriteLogLevel 3
RewriteLog /path/to/rewrite.log

Teşekkürler Gerry. Evet, denedim; sadece tekrar denedim; maalesef çalışmıyor. .Htaccess'i değiştirmedim, daha önce olduğu gibi ~ / Sites /… içinde. Bu çok sinir bozucu :(
Niels Heidenreich

Yukarıda değiştirdiğim gibi yeniden yazmayı etkinleştirmeyi deneyin.
Gerry

Tamam, göründüğü gibi mod_rewrite ile ilgili bir sorun değil; tamamen yok sayılan .htaccess dosyasıdır. İçine herhangi bir önemsiz şey yerleştirebilirim ve hata mesajı almıyorum. Yani Apache yüklemiyor. İzinleri kontrol ettim, tamam (dosya dünya tarafından okunabilir). Çalıştırılabilir yapmayı denedim, değişiklik yok.
Niels Heidenreich

/ Library / WebServer / Documents bir .htaccess yerleştirir ve sınamak için " localhost " açarsanız , bu beklendiği gibi çalışır. Sadece "~ / Sites" içinde çalışmaz.
Niels Heidenreich

Çılgınca bir şey yaptım ve "testitester" giriş adıyla ikinci bir kullanıcı hesabı oluşturdum. Bu kullanıcının .conf dosyasında AllowOverride öğesini All olarak ayarladım. Kullanıcının Sites klasörüne önemsiz içeren bir .htaccess yerleştirdim. Localhost / ~ testitester'a gidersem, beklendiği gibi 500 hatası alıyorum.
Niels Heidenreich

1

Seçenek Ekleme + FollowSymLinks benim için iyi çalıştı

Options +FollowSymLinks

RewriteEngine on
RewriteBase /
RewriteRule

ne yapıyor Options +FollowSymLinks? Benim için işe
yarayan çizgiyi ekliyorum

1

Doğru ayarlanmış bir VirtualHost altında ~ / Sites dizininin içindeki bir alt klasördeyken .htaccess dosyamın tamamen yoksayıldığı benzer bir sorun yaşıyordum.

Son saatini farklı yapılandırma dosyalarıyla oynamak ve AllowOverride All'i çeşitli yerlerde ayarlamak için harcadıktan sonra, sonunda .htaccess dosyasının Finder'da bir .htaccess dosyası gibi göründüğünü, aslında bir .htaccess.txt dosyası olduğunu öğrendim. uzantı gizlendi.

.Htaccess dosyanızı kontrol etmek ve değiştirmek için, üzerine sağ tıklayın ve Bilgi Al'ı seçin ve daha sonra sahip olduğum gibi önde gelen uzantıları kaldırdığınızdan emin olun:

Ve şimdi işe yarıyor!


1

Aşağıda .htaccess girişleri benim için düzeltildi

Options Indexes FollowSymLinks


<ifModule mod_rewrite.c>

RewriteEngine On
#RewriteBase /~charles/Sites/Timesheet/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [NC,QSA,L]


</ifModule>

0

.Htaccess dosyasını / Library / WebServer / Documents içine yerleştirin ve "localhost /" dosyasını açın; test etmek, beklendiği gibi çalışıyor. Sadece "~ / Sites" içinde çalışmaz. Bunun için teşekkürler Niels Heidenreich!


-1

Yazdığınızda: / Users / kullanıcı adı / app_name

/, Web sunucusunun kökünü belirtir:

"Localhost /"

Yeniden yazmanızda / ~ kullanıcıadı / app_name kullanıyorsanız, çalışmalıdır.


1
İle başlayan Yollar /, her zaman Apache için mutlak yollarıdır (http.conf içinde web sunucusu kök tanımını bakın <Directory "/Library/WebServer/Documents">)
nohillside
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.