. htaccess sorunu: belirtilen giriş dosyası yok

8 Cevap php

Birisi bana bu konuda yardımcı olabilir. Ben şimdi 2 saat için bir kafamı duvara vurmak oldum gibi hissediyorum.

Benim makinede yüklü Apache 2.2.8 + PHP 5.2.6 var ve. Htacces altında kodu ile ince, hiçbir hata çalışır.

RewriteEngine on
RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]

Benim barındırma sağlayıcı sunucuda aynı kod bana bir 404 hata kodunu verir ve sadece çıktılar: girdi dosyası belirtilmedi. index.php var IS. Ben Apache yüklü (yerde sürüm bilgi bulamıyorum) ve PHP v5.2.8 çalışan biliyorum.

Ben, windows xp 64-bit kulüpler onlar cgi / fastcgi modunda php ile bazı Linux çalıştıran ediyoruz. Herkes ne sorun olabilir önerebilirsiniz?

PS. Bu önemli ise CodeIgniter dostu URL'ler ile çalışmak için bu.


Update1:

mod_rewrite üzerinde yüklü ve.

Ne fark ettik ben RewriteRule değiştirmek eğer / index.php? $ 1 (soru işareti yerine ters eğik çizgi) için sonsuz bir döngüye gider. Neyse, soru işareti kullanarak bu şekilde işe gitmiyor CodeIgniter (gerekli) gibi bir seçenek değildir.

Example.com / index.php: Ben index.php doğrudan talep olduğunda Anasayfa da çalışır

Ben apache kez Bölü çizgisi artık bir dosya değil eklenir düşünme fakat bir klasör olabilir düşünmeye başlıyorum. Böyle bir davranışı değiştirmek nasıl?


Güncelleme 2:

I was wrong.
Apache handles these urls correctly.
Requesting http://example.com/index.php/start/ (homepage) or any other valid address works.
Seems that Apache is just not forwarding the query for some reason.


Güncelleme 3:

Just to be clear what I'm trying to achieve.
I want to rewrite addresses like that:
http://www.example.com/something/ => http://www.example.com/index.php/something/ http://www.example.com/something/else/ => http://www.example.com/index.php/something/else/

8 Cevap

Ben de bu karşı başımı dövüyordu. Ben de Kod Igniter kuruyorum.

Goocher no RewriteBase oldu. . İşte benim htaccess bulunuyor:

DirectoryIndex index.php

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|robots\.txt)

RewriteRule ^(.*)$ index.php?/$1 [L]

Baba Kullanıcıları Git:

  1. Lütfen Go Daddy Hesabınıza giriş
  2. barındırma hesabı tıklayın.
  3. Ayarlar> Dosya Uzantıları Yönetimi gidin
  4. değişim. php ve (yerine PHP5.2xFastCGI arasında) PHP5.2X altında çalışacak. php5

ÇÖZÜLDÜ!!

Bu basit bir RewriteCond ile çalışır eğer deneyin; gibi varolan bir dosya / klasör / link değil, sadece her şeyi yeniden yazıyor biri:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ /index.php/$1 [R,L]

Bu ana yönetici. Htaccess içinde Rewrite kullanma yeteneği devre dışı olması çok muhtemeldir. Hatta mod_rewrite yüklü olmayabilir.

Onlara bir e-posta damla ve isteyin

Bu bir sunucu yapılandırma sorunu olduğundan, belki Server Fault sormalısınız

Edit (since you are sure that the server is configured correctly)

Satır $ bir ucu ile RewriteCond etiketleme düşündünüz mü?

RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)

(Benim sınırlı bilgiye dayalı) bir url başında ... index.php, css, gfx içeren herhangi bir url engeller. Eğer regexp sonunda bir $ yok çünkü, o da oradan devam herhangi adresler engeller ...

Yani www.yourdomain.com/index.php/something www.yourdomain.com/js/something ile aynı yönlendirilir değil

Belki size regexp hemen sonra sona url gerektiren bir $ eklemek istiyorum.

RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)$

Bir nevi o yapıyor olması gerektiğini yönlendirmek anlamaya çalışır, çünkü mod_rewrite, kendi iyiliği için biraz fazla akıllı. Eğer bir klasöre yönlendirmek için çalıştığınız gibi bu durumda mod_rewrite görünüyor, bu yüzden klasörün arar ve dolayısıyla hata bulamıyorum.

Edit: Sadece ben senin en iyi bahis için yeniden yazma kuralı değiştirmek için olduğunu düşünüyorum gayet açık olması için:

RewriteRule ^(.*)$ /index.php?$1 [L]

Eğer bir eğik olmak istiyorum neden çok speciic neden olmadıkça.

Edit 2: Ben zaten denedim görüyoruz. Eğer yeniden yazma durumda index.php var çünkü sonsuz bir döngü alıyoruz nedenidir. Eğer sonsuz döngü özgür olması gerektiğini çıkarın.

Burada eylem no input file specified hakkına yakalanan bir zamandır:

İşte bu neden olur:

RewriteRule ^(.*\.swf)$  redirect_php.php/?a=1 [last]

Bu düzeltilmiş:

RewriteRule ^(.*\.swf)$  redirect_php.php?a=1 [last]

dikkat / sorgudan önce ?

Bu gerçekten dosya adlarından sonra yollarını okuma yeteneği hakkında AcceptPathInfo, ilgili görünüyor:

http://domain.com/file.php/tricky_path/?regular_query_stuff

RewriteEngine on <br> RewriteBase / DirectoryIndex index.php RewriteCond $1 !^(index\.php) RewriteRule ^(.*)$ index.php/$1 [L] </br>

Daha fazla ayrıntı için: http://www.phponwebsites.com/2013/11/what-is-htacces.html