Помогите сделать Альтернативную ссылку

  • Автор темы Zloboff
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Z

Zloboff

Прохожие
Вот захотелось мне сделать ЧПУ, но не совсем обычное, тоесть хочу реализовать такую тему создание альтернативной ссылки.

Тоесть в админке хочу создать форму в которую можно вбить дерикторию к примеру /preved/ и что бы в строке браузера отображалось как Для просмотра ссылки Войди или Зарегистрируйсяpreved/ вместо Для просмотра ссылки Войди или Зарегистрируйся

В базе данных создал поле 'seolink' уже туда добавляются через мою админку ссылки типа 'index'

P.S. подобная функция есть в CMF ModX

P.S.S буду очень благодарен за помощь!
 
ну и к форме сделай пару строк кода, чтобы брало из твоей формы "прэвэд" и запихивало в .htaccess или в самом index.php сделай обработку.
 
ну и к форме сделай пару строк кода, чтобы брало из твоей формы "прэвэд" и запихивало в .htaccess или в самом index.php сделай обработку.

А можешь примерчик скинуть? как через индексный файл его запихнуть? Я только учу PHP, знаю уже как запросы делать и т.д. Но вот такое хз как делать, до меня пока не доходит, помогите пожалуйста!
 
$path=$_SERVER['REQUEST_URI']; // теперь у нас $path = Для просмотра ссылки Войди или Зарегистрируйсяpreved/

доставай из строки нужную часть и делай запрос к базе с условием where seolink='tvoy_preved_zdes'
 
$path=$_SERVER['REQUEST_URI']; // теперь у нас $path = Для просмотра ссылки Войди или Зарегистрируйсяpreved/

доставай из строки нужную часть и делай запрос к базе с условием where seolink='tvoy_preved_zdes'

У меня не получилось реализовать! :( Что нужно вписать в index.php? Вот листинг файла...

Код:
<?php

if(isset($_GET['id']))
{
	if(is_numeric($_GET['id']))
	{
		$id = $_GET['id'];
		$sql = $db -> db_query("SELECT * FROM " . DB_PREFIX . "content WHERE id = '$id'");
		$rows = $db -> db_rows();
		$sql =  $db -> db_result();
		$sql = $sql['0'];

		if($rows > 0)
		{
			$contitle = stripslashes($sql['title']);
			$context = stripslashes($sql['content']);
			
			$content = "
			<h2>$contitle</h2>
			$context<br />
			";
			
			if(!empty($sql['keywords'])){ $keywords = $sql['keywords'];}
			if(!empty($sql['description'])){ $description = $sql['description'];}
			
			$pagetitle = $pagetitle . ' | ' . stripslashes($sql['title']);
			
			$rss = 'rss.php';
		}
		else
		{
			$content = '<h2>' . CONTENT_013 . '</h2>' . CONTENT_014;
		}
	}
	else
	{
		$content = '<h2>' . CONTENT_013 . '</h2>' . CONTENT_014;
	}

}
else
{
	$sql = $db -> db_query("SELECT id FROM " . DB_PREFIX . "content 
	WHERE front = 'yes' LIMIT 1");
	$rows = $db -> db_rows();
	$sql = $db -> db_result();
	
	if($rows > 0)
	{
		header('Location: /content/?id=' . $sql['0']['id']);
	}
	else
	{
		$content = '<h2>' . CONTENT_013 . '</h2>' . CONTENT_014;
	}
}

?>
 
.htaccess
RewriteEngine on #включаем mod_rewrite если еще не
RewriteCond %{REQUEST_FILENAME} !-f #если запрашивается не файл, который существует на диске
RewriteCond %{REQUEST_FILENAME} !-d # и не каталог, существующий на диске
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] #то перенаправлять все запросы на index.php, передавая путь в переменной q (будет доступна как $_GET['q'])
в index.php соотв. разбираем полученную строку чтобы в запрос к базе подставить вместо id твой seolink

домашнее задание - освоить по мануалу функции explode и is_numeric,
понять почему is_numeric надо будет убрать
 
Значит создал правило в файле .htaccess:

Код:
RewriteRule ^content/([a-z0-9_-]+)/ modules/content/index.php?id=$1 [L]

Но вот с не могу правельно составить алгоритм. Может кто напишет работающий код?
 
проверяй
Код:
<?php

if(isset($_GET['id']))
{

        $id = $_GET['id'];
        $sql = $db -> db_query("SELECT * FROM " . DB_PREFIX . "content WHERE seolink = '".$id."'");
        $rows = $db -> db_rows();
        $sql =  $db -> db_result();
        $sql = $sql['0'];

        if($rows > 0)
        {
            $contitle = stripslashes($sql['title']);
            $context = stripslashes($sql['content']);

            $content = "
            <h2>$contitle</h2>
            $context<br />
            ";

            if(!empty($sql['keywords'])){ $keywords = $sql['keywords'];}
            if(!empty($sql['description'])){ $description = $sql['description'];}

            $pagetitle = $pagetitle . ' | ' . stripslashes($sql['title']);

            $rss = 'rss.php';
        }
        else
        {
            $content = '<h2>' . CONTENT_013 . '</h2>' . CONTENT_014;
        }


}
else
{
    $sql = $db -> db_query("SELECT id FROM " . DB_PREFIX . "content
    WHERE front = 'yes' LIMIT 1");
    $rows = $db -> db_rows();
    $sql = $db -> db_result();

    if($rows > 0)
    {
        header('Location: /content/?id=' . $sql['0']['id']);
    }
    else
    {
        $content = '<h2>' . CONTENT_013 . '</h2>' . CONTENT_014;
    }
}

?>
 
Спасибо, так то работает))) Но вот теперь ссылки ввиде ?id=1 и т.д. не отображаются :( Можно как-нибудь совместить?
 
сравнить было/стало ))
я просто стер 2 строчки

условие, передается ли в переменной цифра,
как раз и было
if(is_numeric($_GET['id']))
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху