2012-05-31 34 views
11

all üzerinde url-rewriting çalışmıyor. Bu sefer cakephp'i denedim, ancak "URL yeniden yazma işlemi sunucunuzda doğru şekilde yapılandırılmamış." 1) Bunu yapılandırmama yardımcı olun 2) URL yeniden yazmayı kullanmıyorum/kullanamıyorum ". Bunun apache ve/etc/apache2/site-avaliable/default ve her dizin .htaccess gibi .htaccess sorunları olduğunu biliyordum. cakephp, Ubuntu

Benim geliştirme ortamı

...

  • Ubuntu12.04 vmware fusion4 üzerinde
  • apache2.2.22
  • mysql5.5
  • php5.3.10
  • cakephp2.1

İşlemlerim izleniyor ...

1) /etc/apache2/httpd.conf

sudo a2enmod rewrite 
sudo service apache2 reload 

3) düzenleme/etc/apache2/siteleri-yelpaze/varsayılan (AllOverride Yok AllOverride Hepsi mod_rewrite'ın sağlayan

<Directory /> 
Options FollowSymLinks 
AllowOverride All 
</Directory> 

2))

<Directory /> 
Options FollowSymLinks 
AllowOverride All 
</Directory> 
<Directory /var/www> 
Options Indexes FollowSymLinks MultiViews 
AllowOverride All 
Order Allow,Deny 
Allow from all 
</Directory> 

prompt: sudo service apache2 reload 

4) düzenleme ya da kontrol her .htaccess dosyası -> kek kök klasörü

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ app/webroot/ [L] 
    RewriteRule (.*) app/webroot/$1 [L] 
    </IfModule> 

-> uygulama kök dizini

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
    </IfModule> 

-> webroot dizini

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php/$1 [QSA,L] 
</IfModule> 

Bu sorun çözüldü, teşekkür ederim.

+1

define 'çalışmıyor ' – Dunhamzzz

+1

Bu benim için hile yaptı. sudo a2enmod rewrite && sudo hizmeti apache2'yi yeniden yükle – mac

+0

Adım 1 hariç her şeyi yaptım .. teşekkürler " –

cevap

6

Bu sorunu da yaşadım. CakePHP kaynağının yanında .htaccess dosyasının kopyası kopyalanmıyor. Bu, cp komutunu kullanırken veya bir dosya tarayıcısında gizli dosyaları göremediğinizde, üst düzey dizini kopyalamadıkça yaygın bir sorundur.

Dosyanın doğrudan bir kopyasını proje klasörümde yapmak, benim apache ayarlarım ile uğraşmak zorunda kalmadan benim için düzeltdi.

cp ~/git/cakePHP/.htaccess ~/project/folder/ 
-1

Bu bir dosya izinleri sorunu olabilir. Hem webroot hem de tmp dizinleri için yinelemeli olarak 777'ye ayarlamayı deneyin. Tmp dizini sudo gerektirebilir.

sudo chmod -R 777 /path/to/app/webroot/ 
sudo chmod -R 777 /path/to/app/tmp/ 
+0

Yanıtlama için teşekkürler. Izinler zaten iyiydi. –

+0

Webroot'a yalnızca 777 izni veremezsiniz. güvenlik –

0

Olası missconfiguration:

Kontrol Dosya http://your_domain_name/css/cake.generic.css kendi Browser rechable ise. Eğer kök seviyesinde bir {HOME}/css Dizin varsa Varsayılan-Homepage

yılında uyarıyı alacak Değilse, UrlRewriting {HOME}/app/webroot/css/cake.generic.css için http://your_domain_name/css/cake.generic.css yönlendirme olmayacaktır.Böylece, css-File bulunamadı ve bu mesajın URL yeniden yazmanın düzgün şekilde yapılandırılmamasına neden oluyor.

Çözüm (Dosya uygulaması/Görünüm/Sayfa/home.cpt bak): Completly kök düzeyinde {HOME}/css Directory kaldırın. Senin css-Dosyayı {HOME}/app/webroot/css'a koy.