Autor Zpráva
bartn
Profil
Čau, mám někde chybu v htaccess a nevidím kde? Stránky běží, ale nejsou indexovaný roboty, robot zůstane ve smyčce a odejde. Může někdo pomoc?

RewriteEngine On
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^domena.com[nc]
RewriteRule ^(.*)$ http://www.domena.com/$1 [L,R=302,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.+)\.php$ http://%{HTTP_HOST}/$1 [L,R=302,NE]

RewriteRule ^cs/(.*)$ $1?lang=cs [QSA]
RewriteRule ^en/(.*)$ $1?lang=en [QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Kajman
Profil
bartn:
robot zůstane ve smyčce a odejde
To jste poznal z logů nebo jak?

Zběžně totiž pravidla nevypadají na problém s cyklením. Můžete si ale přidat mezeru před hranatou závorku na třetím řádku.
bartn
Profil
Že zůstane ve smyčce jsem zjistil u technické podpory na seznam.cz, ale více mi nechtěli pomoc.
Kajman
Profil
Pokud je tam opravdu smyčka přesměrování, tak nejspíše budou i nějaká další přesměrování (v konfiguraci apache, v php kódu).

Smyčku by měl odhalit i prohlížeč nebo robot na stahování (wget, httrack). Případně se mrkněte do access logu apache na přístupy seznambota a stavem odpovědí 30x.
Davex
Profil
bartn:
Máš tam chybu v PHP. Po nastavení session přesměrováváš na tu samou stránku a pokud klient nepodporuje cookies, tak se URL přesměrovává stále samo na sebe.
bartn
Profil
buď koukám jinam, nebo to prostě nevidí

....
/**
 * Class Core
 * 
 * Main class of this application.
 */
class Application {
    
    private static $instance = null;
    
    /**
     * Constructor Core class
     */
    private function __construct() {
        
    }
    
    public function run(){
        try {  
            
            $registry = array();

            # Get session from database
            $session = Session::get_instance();
            
            # Session start
            $session->start_session();
            
            # Get session from database
            $session->get_session(session_id());
            
            $registry['database'] = Database::get_instance();
            
            # Check redirect
            $current_url = Router::get_current_url();
            Redirect::check_redirect($current_url, $registry, true);
            
            # Router Class and url paramters
            $router = Router::get_instance();
           
            $registry['router'] = $router;
       
            # Set language
            $lang = $this->load_language($registry);
            
            $registry['lang'] = $lang;

            $registry['date_format'] = 'd.m.Y h:m:s';
            
            $registry['date_format_2'] = 'd.m.Y';
            
            $database_cache = Database_Cache::get_instance();
            
            $database_cache->set_registry($registry);
            
            $router->set_language($lang);

            # Set application settings
            $this->load_application_settings($registry);

            # Set application definitions
            $this->load_application_definitions($registry);

            # Set cache and get Code
            $cache_manager = Cache::get_instance($registry);

            $web_page_code = $cache_manager->start_cache();

            if($web_page_code[0]){

                if($router->is_admin()){
                    # Create url map of all pages
                    $router->set_urls(false);

                    # Create user instance
                    $registry['user'] = User::get_instance($lang, $registry);

                    $registry['templates_dir'] = G_ADMIN_TEMPLATES_DIR;
                    $registry['modules_dir']   = G_ADMIN_MODULES_DIR;

                } else {

                   # Create url map of all pages
                   $router->set_urls(false);

                   # Create user instance
                   $registry['user'] = User::get_instance($lang, $registry);

                   $registry['templates_dir'] = G_TEMPLATES_DIR;
                   $registry['modules_dir']   = G_MODULES_DIR;

                }

                require 'controllers/cache_page_controller.php';

                $controller  = new Page_Controller($registry);

                $data = $controller->index($web_page_code[1]);

            } else {

                # Set default controller
                # Using for every pages on web
                if($router->is_admin()){

                   # Create url map of all admin pages
                   $router->set_urls(true);

                   # Create user instance
                   $registry['user'] = User::get_instance($lang, $registry);

                   # Set paths
                   $registry['templates_dir'] = G_ADMIN_TEMPLATES_DIR;
                   $registry['modules_dir']   = G_ADMIN_MODULES_DIR;

                   # Load admin page controller
                   require 'controllers/admin_page_controller.php';
                   $controller  = new Page_Controller($registry);
                   $data = $controller->index();

                } else {

                   # Create url map of all pages
                   $router->set_urls(false);

                   # Create user instance
                   $registry['user'] = User::get_instance($lang, $registry);

                   # Set paths
                   $registry['templates_dir'] = G_TEMPLATES_DIR;
                   $registry['modules_dir']   = G_MODULES_DIR;

                   # Load admin page controller
                   require 'controllers/page_controller.php';
                   $controller  = new Page_Controller($registry);
                   $data = $controller->index();
                }
            }
          
            $cache_manager->end_cache();

            $session->update_session(session_id());

        ## Fatal error
        } catch (Database_Exception $e){
             
            # Router Class and url paramters
            $router = Router::get_instance();
           
            $registry['router'] = $router;
            
            if(isSet($controller))  
                unset($controller);
            
            # Create user instance
            $registry['user'] = User::get_instance($lang, $registry);
            
            $registry['templates_dir'] = G_TEMPLATES_DIR;
            $registry['modules_dir']   = G_MODULES_DIR;
               
            # Load controller
            require 'controllers/error_controller.php';
            $controller  = new Error_Controller($registry);
            $data = $controller->index($e);
        
        ## Error 404 - wrong url    
        } catch (Exception $e) {
          
            if(isSet($controller))
                unset($controller);
            
            # Create user instance
            $registry['user'] = User::get_instance($lang, $registry);
            
            $registry['templates_dir'] = G_TEMPLATES_DIR;
            $registry['modules_dir']   = G_MODULES_DIR;
               
            # Load controller
            require 'controllers/error_404_controller.php';
            $controller  = new Error_Controller($registry);
            $data = $controller->index($e);
        } 
        
        unset($session);
        
        # Delete created controller
        unset($controller);
    }

    public function load_application_definitions($registry){

        if(!defined('APP_DEBUG') || APP_DEBUG == 0)
            Model::load('system_translation_model', $registry)->set_definitions($registry['lang'], '%', $registry['router']->is_admin());

    }

    function load_application_settings(&$registry){

        $registry['web_settings'] = Model::load('system_setting_model', $registry)->get_settings();

    }
    
    /**
     * Load main language file by paramter in URL
     * 
     * @param array $router 
     */
    function load_language($registry){
        
        # Load language core class
        require_once 'core/core_language.php';
        
        # Create language core class object
        $language = Language::get_instance($registry['router']->get_url_params(), $registry);
        # Get currently selected language
        $lang = $language->get_current_language();
        
        if(defined('APP_DEBUG') && APP_DEBUG == 1) {
            # Include language file
            if(file_exists(G_DIR_LANG . $lang . '.php')){
                require_once G_DIR_LANG . $lang . '.php';
            }
            else if(file_exists(G_DIR_LANG . G_DEFAULT_LNG . '.php')){
                require_once G_DIR_LANG . G_DEFAULT_LNG . '.php';
            }
        }
        return $lang;
    }
   
    /**
     * Create new instance of this class or return old instance
     * 
     * @return class instance
     */
    public static function get_instance()
    { 
        if(self::$instance == false) { 
          self::$instance = new Application(); 
        } 

        return self::$instance; 
    } 
    
    public function loadSettings(){
    
    }
}
?>
Davex
Profil
Tipnul bych to na ten 35. řádek.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: