.httaccess как да взема съдържанието на променливата

eddyy93

Registered
Поредната тема за "friendlyUrl".

Така взимам заглавието и му слагам "-" на празните места. Всичко е в една променлива с име $tt примерно.

Сега как тази променлива $tt да е сложа в .httaccess и да ми зарежда като friendlyUrl.
 

relax4o

Registered
С file_get_contents() и file_put_contents(). А може и с file() за да ти изкара всеки ред като ключ на масив, за да може по-лесно да си обработиш файла.
 

eddyy93

Registered
Хмм имаш предвид да взимам съдържанието на .httaccses и да го променям спрямо заглавието.

Също така как да структурирам този .httaccses файл. Примерно:

show.php?news=200 <-- това ми е примерен линк.
 

eddyy93

Registered
До тук това:


$tt['news'] <-- От заявка пристига.

PHP:
$geturlto=rr(stripslashes($tt['news']));
$geturlto=explode(" ", $geturlto);
$geturlto=implode("-", $geturlto);


 if(mb_strlen($geturlto,'UTF-8')>40){
                    $geturlto=mb_substr($geturlto,0, 40,'UTF-8');
                        }
       
        echo $geturlto;
       



$lines=file('.htaccess');
foreach ($lines as $line_num => $line) {
    echo $line_num.": " .$line. "<br />\n";
}


Това нещо не ми стана ясно защо да замествам в .httaccess -а през php - то ... Искам тази променлива да се чете от httaccess нали там има някакви
Код:
RewriteRule ^show.php?news=$geturlto
нещо подобно на това.
 

relax4o

Registered
Ами според мен това, което ще правиш ще стане доста затлачено. По-добре си смени методиката. В момента не ми се мисли кое би ти помогнало в случая, но се замисли над цялостната си структура и как би могъл да я промениш, за да успееш да направиш "friendly URLs".



ЕДИТ: За това ли питаш ?

PHP:
RewriteEngine On

RewriteRule ^news/([^/]+)/?$ show.php?news=$1 [QSA, L]
 

eddyy93

Registered
Internal Server Error

Мисля, че да. Дадено урл примерно

localhost/show.php?news=1 да стане localhost/show/Новината-с-ид-1
 

eddyy93

Registered
Проблема е бил в мен за редиректите, но в момента с това ми бъгва всичко като напиша в URL - то:

localhost/show.php/новината-по-ид

Първо не открива таква новина и 2-ро дизайна се губи.
 

eddyy93

Registered
Върна ми изведнъж увереността! Стана! Но как сега може да се направи да е по заглавието ?
 

relax4o

Registered
В момента ми идва един вариант, иначе по принцип варианти много ще има, но не се знае кой колко оптимизиран ще е.
Та варианта, който ми идва е:
Подаваш заглавието, като празните места ги правиш на тире(-), след което rewrite-a трябва да изглежда така

PHP:
RewriteRule ^show/([^/"']+)/? show.php?news=$1 [L]

и на $_GET['news'] подаваш не число, а стринг. Като получиш стринга с тиретата(т.е. заглавието) го обработваш и му махаш тиретата и "бъркаш" в базата данни по `title`.


Малко заплетено го обясних, но ако нещо не си разбрал - питай, ще се опитам да го обясня по-добре. :)
 

eddyy93

Registered
Стана това нещо, но ме изправя пред проблема. Ако има 2 еднакви заглавия ...

ЕДИТ:

И още един проблем, ами ако в заглавието попринцип си има тире... тогава се объркват нещатата с explode.

Също така сега "show" го счита за директория и като искам да ида на друг линк, не се получава. Пример: /show/index.php
 

eddyy93

Registered
Всъщност как ще стане (поне сега ще опитам).

1. В базата данни няма да проверяваме по title ами пак по ID. Как ще стане това.

Ето го линка който ме води към новината пример:

PHP:
$title=$row['title'];
$id=$row['id'];
$title_imp=explode(" ", $title);
$title_imp=implode("-", $title_imp);
<a href='show.php?news=".$id."-".$title_imp." '>".$title."</a>

Сега как проверяваме:

PHP:
$getname=$GET['news'];
$getname=explode("-", $getname);
$id=$getname[0]; // С това правим си проверките в базата данни и вадим резултатите

2.Преди малко те питах за "show" как да не го мисли за категория. Ами добавяме абсолютни пътища на всякъде. Пример: localhost/thesait/index.php
 

relax4o

Registered
Това е до генериране на линковете. В момента стана доста късно и не мога да ти обясня точно как би станало.
В такива случаи аз бих си направил един генератор, който да приема име на линка като първи параметър и id на новината като втори параметър. Така при натискане на новината ще се предава определеното ID.



Ето ти примерен код. Надявам се да му хванеш цаката:

PHP:
<a href="<?php echo Route::ToURL(array('link', 12)); ?>">News</a>
<?php

class Route {
    
	public static $_id;
 
    public static function ToURL($route = ''){
        
        $protocol = strtolower(strstr($_SERVER['SERVER_PROTOCOL'], '/', true));
        $domain = $_SERVER['HTTP_HOST'];
        
        if(isset($route) && is_array($route)){
            
			self::$_id = $route[1];
            return $protocol . '://' . $domain . '/' . $route[0];
        }
    }
}

class News {
	
	public static function showId(){
		return Route::$_id;
	}
}

echo News::showId();


?>


Линка ще изглежда http://localhost/link и до него ще изведе 12.
 

relax4o

Registered
Ами навярно твоя ти се струва по-лесен, но ти препоръчвам да се захванеш с ООП. Всичко е доста по-подредено и по-лесно(поне на мен де).

Но за такива линкове си направи универсален генератор. Горе ти изцвъках част от моя framework и го пригодих за примера, за да ти покажа горе-долу как да си генерираш линкове, които да ги достъпваш отвсякъде.
 

eddyy93

Registered
Мерси за помоща от твоя страна. Само ако може в този ред от .htaccess - а, да добавиш накрая след новината да добавя .html


RewriteRule ^show/([^/"']+)/? show.php?news_show=$1 [L]
 

Горе