Yani benim sorunum aynı kod doğru çevrimiçi% 100 çalışıyor, ben (Loki ile benim PC'de) uygulama çevrimdışı test ederken sadece oluşur, biraz garip.
İşte helper (sadece örnek) kullanmak nasıl:
<a href="<?php
echo $this->url(array('module' => 'admin',
'controller' => 'index',
'action' => 'approve-photo',
'id' => $this->escape($a->id),
'ret' => urlencode('admin/index/photos')),
null,
true);
?>" class="blue">approve</a>
Online, bu linki harika çalışıyor, bu benzer eylem gider:
public function approvePhotoAction()
{
$request = $this->getRequest();
$photos = $this->_getTable('Photos');
$dbTrans = false;
try {
$db = $this->_getDb();
$dbTrans = $db->beginTransaction();
$photos->edit($request->getParam('id'),
array('status' => 'approved'));
$db->commit();
} catch (Exception $e) {
if (true === $dbTrans) {
$db->rollBack();
}
}
$this->_redirect(urldecode($request->getParam('ret')));
}
Bu yüzden online, bu fotoğraf onaylar ve geri URL "ret" param ("admin / index / resimler") olarak kodlanmış bir URL'ye yönlendirir.
Ama offline WAMPServer ile ben linke tıklayın ve bunun gibi 404 hatası alıyorum:
Not Found
The requested URL /public/admin/index/approve-photo/id/1/ret/admin/index/photos was not found on this server.
Ne oluyor?
Ben WAMPServer en son sürümünü (Loki 2.0i [11/07/09]) kullanıyorum. Her şey çalışıyor.
. İşte benim htaccess dosyası sadece durumda olduğunu:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
# Turn off magic quotes
#php_flag magic_quotes_gpc off
Benim yerel PC'de ZF projelerini test etmek için sanal konaklar kullanıyorsanız ediyorum. İşte sanal konaklar eklemek nasıl.
httpd.conf:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName myproject
DocumentRoot "C:\wamp\www\myproject"
</VirtualHost>
hosts dosyası:
127.0.0.1 myproject
Bu benim localhost bir kabus ve neredeyse imkansız bir görev üzerinde test ve hata ayıklama yapar, projeler, çünkü herhangi bir yardım mutluluk duyacağız. Ben çalışıp çalışmadığını kontrol etmek her şeyi online yüklemek zorunda: (
GÜNCELLEME:
(ZF yardımcısında inşa) _redirect yardımcısı kaynak kodu:
/**
* Set redirect in response object
*
* @return void
*/
protected function _redirect($url)
{
if ($this->getUseAbsoluteUri() && !preg_match('#^(https?|ftp)://#', $url)) {
$host = (isset($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:'');
$proto = (isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!=="off") ? 'https' : 'http';
$port = (isset($_SERVER['SERVER_PORT'])?$_SERVER['SERVER_PORT']:80);
$uri = $proto . '://' . $host;
if ((('http' == $proto) && (80 != $port)) || (('https' == $proto) && (443 != $port))) {
$uri .= ':' . $port;
}
$url = $uri . '/' . ltrim($url, '/');
}
$this->_redirectUrl = $url;
$this->getResponse()->setRedirect($url, $this->getCode());
}
GÜNCELLEME 2:
Yardımcı çevrimdışı Çıktı:
/admin/index/approve-photo/id/1/ret/admin%252Findex%252Fphotos
Ve online (aynı):
/admin/index/approve-photo/id/1/ret/admin%252Findex%252Fphotos
GÜNCELLEME 3:
Tamam. Sorun sanal konak yapılandırması ile aslında. Belge kök C kuruldu: \ wamp \ www \ myproject yerine C: \ wamp \ www \ Projem kamu \.
Ve ben ortak klasöre yönlendirmek için bu htaccess kullanıyordu:
RewriteEngine On
php_value upload_max_filesize 15M
php_value post_max_size 15M
php_value max_execution_time 200
php_value max_input_time 200
# Exclude some directories from URI rewriting
#RewriteRule ^(dir1|dir2|dir3) - [L]
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^public/.*$ /public/index.php [NC,L]
Ben bu konuda unuttum neden bilmiyorum kahretsin, ben, ben bu konuda% 100 emin olduğunu, sanal konak ortak klasöre doğru yapılandırılmış olduğunu düşündüm ben de çifte kontrol ettim ve ben kör am hiçbir sorun (wtf? Gördü? .)