PHP Mevcut klasördeki. Htaccess dosyasını değiştirmek için izin verilir?

5 Cevap php

I have a PHP web app located on shared hosting. My goal is to modify .htaccess file from PHP code when the PHP page is running. I need that .htaccess to insert a couple of mod_rewrite lines into it.

The problem is that on Windows+Apache I can dynamically modify .htaccess file but the same code on Linux reports a problem when I try to access this file in any way (copy or fopen):

"failed to open stream: Permission denied"

I have given .htaccess file 777 permissions - still no result. WHat prevents me from doing this? How can I develop a workaround?

P.S. My initial goal was to be able to add a new RewriteRule into .htaccess that maps a newly added category_id with new category_name.

Bu barındırma paylaşılan değilse, ben (ana Apache config) RewriteMap gibi bir şey kullanmak istiyorsunuz ve harita dosyaya erişmek mümkün olacaktır.

Bu PHP + Apache ile mücadele yapamaz oldum ilk gerçek sınırlama, ama ben çok circuventable umuyoruz.

5 Cevap

Ben de çalışan başka bir şey önermek istiyorum. Bunun yerine her 'özel' url için bir kural yazma, neden bütün için birini kullanmak değil?

Her url dizine yönlendirilir: Ben bir sürü daha kolay kullanır ne wordpress kullanmak bulundu.

Yapmanız gereken tek şey, (belki de ['URI_REQUEST'] $ _SERVER kullanılarak) yüklenen dizinde okumak dizin dosyası, kurmak, ve onunla başa edilir.

. htaccess bu ekleyin:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Bu chunck sayesinde sizin emrinizde biraz sınırsız bir sistemi var. Hiç size categrory url yeniden adlandırma gibi hissediyorum, ya da başka bir özel durum eklerseniz, zaten hazır!

Bu sadece URL'den kategori adını alır ve karşılık gelen kimliği yükleyen genel bir "yük kategorisinde" sayfasına sahip bir aşırı-karmaşık bir çözüm gibi görünüyor.

Örneğin, URL:

http://yoursite.com/category/programming

Gibi bir şey o eşleştirmek olacaktır:

http://yoursite.com/category.php?name=programming

Sadece yeniden yazma kurallarının küçük bir dizi gerekir. Çad anlaşılacağı ne yapmak için:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/category/.*$ category.php [QSA]

Böylece, her zaman birisi, $_SERVER['REQUEST_URI'] olarak /category/ URI'yı teslim edilecek olan, /category/category_id, istek category.php yönlendirileceksiniz gider Kolayca kategori kimliği alabilirsiniz, ve. htaccess dosyasını bir kategori eklemek her zaman düzenleme ile rahatsız gerekmez hangi.

Ben yukarıdaki yorumlarla kabul ederken, kesinlikle yapılabilir. WordPress gibi PHP uygulamalar tam olarak bu ayarları sayfasında yapılan değişiklikler temel yok. Ancak üst dizin ona yazmak için web sunucusu kullanıcı için izniniz İHTİYAÇ dosyayı yazma gibi basit olmalıdır.

Sizin için çalışıyor değilse hile üst dizini 777 veya 775 ya yapma ve grup Apache (genellikle "apache" veya "www" veya benzer bir şey) altında çalışan grup ne olursa olsun ayarlanır sahip olacak

(Sorunuza yorum) Adam olsa, sunucu üzerindeki diğer bazı güvenlik katmanı bunu yaparken sizi engelliyor olabilir oldukça doğru olduğunu, ve bu muhtemelen sorunu yanlış bir şekilde yaklaşıyor olabilir iyi bir göstergesidir.

Ben Chad Birch katılıyorum. Eğer olsa, dissuaded olamaz sizin durumunuzda ilk kilitli izinleri ile ebeveyn dizinleri arıyor olurdu.

Bilginize,. Htaccess yeniden kötü bir fikir olduğunu nedenlerinden biri while. Htaccess yeniden ediliyor gelen herhangi bir istekleri yönlendirmeleri herhangi uygulamalı yok olmasıdır.