• 16-04-2022, 00:44:32
    #1
    Arkadaşlar herkese iyi geceler,

    .htaccess kullanmadan seo url yapısını nasıl yapabileceğim konusunda fikri olan varmı. Yapmak istediğim şey şu, sınırsız dil yapısı oluşturdum menuden kullanıcı ingilizceyi seçip seo url yapısına homepage yazdığında o url adresini nasıl tanımlarım? .htaccess ile bu işlemler çok kolay halledilebiliyor ama kullanıcının kodlarla hiç ilgisi olmadan bunu otomatik şekilde yapmasını istiyorum. Bir yolu var mı bu durumun?

    Şimdiden yardımcı olacaklara çok teşekkür ederim
  • 16-04-2022, 00:48:35
    #2
    $_SERVER["REQUEST_URI"] değerini parse edip yapabilirsiniz. Bu şekilde
    http[:]//example[.]net/index.php/homepage/
    şeklinde bir URL oluşturabilirsiniz.
  • 16-04-2022, 00:49:49
    #3
    segfault adlı üyeden alıntı: mesajı görüntüle
    $_SERVER["REQUEST_URI"] değişkenini parse edip yapabilirsiniz.
    switch case mi
    • UretimAjansi
    UretimAjansi bunu beğendi.
    1 kişi bunu beğendi.
  • 16-04-2022, 00:57:41
    #4
    yararlı olduysa r10+ atabilirsiniz.
    http://www.erbilen.net/php-sef-link-fonksiyonu/
  • 16-04-2022, 01:00:13
    #5
    Misafir adlı üyeden alıntı: mesajı görüntüle
    switch case mi
    En iyisi bir örnek vermek.
    $uri = str_replace($_SERVER["SCRIPT_NAME"], "", $_SERVER["REQUEST_URI"]);
    $parts = preg_split("#[/\\\\]+#", $uri);
    switch (strtolower($parts[0])) {
      case "homepage": view_homepage(); break;
      case "profile":
        switch (strtolower($parts[1])) {
          case "edit": ...
          case "delete": ...
        }
      ...
    }
  • 16-04-2022, 01:09:46
    #6
    Hersio adlı üyeden alıntı: mesajı görüntüle
    yararlı olduysa r10+ atabilirsiniz.
    http://www.erbilen.net/php-sef-link-fonksiyonu/
    kontrol edeyim burayıda teşekkür ederim
    segfault adlı üyeden alıntı: mesajı görüntüle
    En iyisi bir örnek vermek.
    $uri = str_replace($_SERVER["SCRIPT_NAME"], "", $_SERVER["REQUEST_URI"]);
    $parts = preg_split("#[/\\\\]+#", $uri);
    switch (strtolower($parts[0])) {
      case "homepage": view_homepage(); break;
      case "profile":
        switch (strtolower($parts[1])) {
          case "edit": ...
          case "delete": ...
        }
      ...
    }
    hocam tam olarak bu oluyor mu bilmiyorum ama kurduğum yapıda kullanıcı dili kendisi ekliyor almanca eklerse eğer anasayfa yerine startseite olarak cıkacak ancak kullanıcının bunu kodlarla duzenlemeden otomatık olarak sistemin sağlaması gerekiyor. Bu yapı ile bunu yapabilir miyim
  • 16-04-2022, 01:34:01
    #7
    Araştırmanız gereken konu "Route".

    Ama .htaccess kullanımı olmadan yapamazsınız onu belirtmeliyim.

    Sizin yaptığınız muhtemelen şöyle birşey;

    .htaccess


    RewriteEngine on
    RewriteRule ^hakkimizda$ index.php?page=hakkimizda
    RewriteRule ^profil/([_A-Za-z0-9-]+)$ index.php?page=profil&permalink=$1
    index.php

    <?php
    switch($_GET['page'])
    {
    	case 'hakkimizda';
    	
    		include('hakkimizda.php');
    	
    	break;
    	
    	....
    }

    Daha esnek kullanımla Route yapısına bir örnek hazırladım geliştirmek sizin elinizde. Dil için bazı yönergeler ekledim.


    .htaccess

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L]

    index.php


    <?php
    
    
    class Route
    {
    	public static function parse_url()
    	{
    		$request_uri = $_SERVER['REQUEST_URI'];
    		$request_uri = trim($request_uri,'/');
    		$params = explode('/',$request_uri);
    		return $params;
    	}
    	public static function language_detect()
    	{
    		return @$_SESSION['lang'];
    	}
    	public static function add_param($match,$include,$lang='all',$_request_method='all')
    	{
    		$params = self::parse_url();
    		$language = self::language_detect();
    		$request_method = strtolower($_SERVER['REQUEST_METHOD']); // GET,POST v.b
    		
    		// preg_match da kullanılabilir dediğim gibi geliştirmek sizin elinizde
    		
    		
    		if($params[0]==$match)
    		{
    			if(($_request_method==$request_method or $_request_method=='all') and ($lang==$language or $lang=='all'))
    			{
    				include($include);
    			}
    		}
    	}
    	
    	
    }
    
    // Dilin sessionda tutulduğunu varsayıyorum.
    
    Route::add_param('hakkimizda','hakkimizda.php','tr');
    Route::add_param('hakkimizda','hakkimizda.php','en');
    Route::add_param('urunler','urunler.php','tr');
    
    ?>