форум вебмастероff на AlfaSpace.NET

Ubuntu и Linux |реактивный бесплатный хостинг | Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга | правила форума

  Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ °
Форум вебмастеров на AlfaSpace.NET / CMS и Форумы / Как отрегулировать ЧПУ (russkie imena stranic - translitom)
Автор Сообщение
andrei_a
Участник

5
# Дата: 15 Авг 2006 05:14


Насколько я понял из изучения материалов в разных форумах, Человеко-Понятные URL создаются в файле .htaccess через MOD_REWRITE

Как сделать (где и что вписать), чтобы URL имели такой вид:

1) Страницы имеют расширение .html

2) Russkie imena stranic otobrazhajutsja translitom (volapukom, krakozyabroy), то есть в виде http://www.chtoto.ru/articles/psihologia/test_lushera.html вместо http://www.chtoto.ru/articles.php?group_id=психология&article_id=тест_люшера

3) Имена страниц формируются из названия темы, введенной при заполнении формы сообщения.

digs
Участник

364
# Дата: 15 Авг 2006 06:24


Можно просто написать

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+) - [PT,L]

RewriteRule ^(.*) index.php

А потом уже в самом скрипте (index.php) взять переменную $_SERVER["REQUEST_URI"] и разобрать ее, заодно сделав нужные преобразования

andrei_a
Участник

5
# Дата: 16 Авг 2006 10:18


» digs
digs
А потом уже в самом скрипте (index.php) взять переменную $_SERVER["REQUEST_URI"] и разобрать ее, заодно сделав нужные преобразования



В нем нет такой переменной. Там есть:

$_SERVER['SERVER_PORT']
$_SERVER['HTTP_HOST']
$_SERVER['PHP_SELF']
$_SERVER['REMOTE_ADDR']
$_SERVER['HTTP_REFERER']

persei
Участник

482
# Дата: 16 Авг 2006 10:45


andrei_a
если в $_SERVER нет request_uri то я не я он есть даже при safe mode

smallcms
Участник

2752
# Дата: 16 Авг 2006 11:00


persei
его действительно нет, если ты не перешёл с главной, например, а просто делал direct request :)

persei
Участник

482
# Дата: 16 Авг 2006 11:08


smallcms
при пустом реферере она есть. а вот при пустом реквесте ее нет. хотя на некоторых серверах она есть но в null

digs
Участник

364
# Дата: 16 Авг 2006 12:12


andrei_a
Значит задаешь какую нибудь страшную адресную строку, запускаешь этой строкой скрипт (index.php через mod_rewrite) в котором есть команда phpinfo() и в полученной инфе ищешь эту строку. Как найдешь, смотри в какой переменной она лежит. Переменных может быть несколько

smallcms
Участник

2752
# Дата: 16 Авг 2006 12:23


вообще решается директивами

RewriteEngine On
RewriteBase /
RewriteRule ^([-_A-Za-z0-9]+)\/([-_A-Za-z0-9]+)\/([-_A-Za-z0-9]+)\.html$ ./$1.php?group_id=$2&article_id=$3
RewriteRule ^([-_A-Za-z0-9]+)\/([-_A-Za-z0-9]+)\.html$ ./$1.php?group_id=$2
RewriteRule ^([-_A-Za-z0-9]+)\.html$ ./$1.php

(к примеру)

по транслиту имхо опасная вещь. вдруг я кодировку другую принудительно укажу? :))) хотя сделать можно. но как сказали, это делается в самом движке, а не в .htaccess

andrei_a
Участник

5
# Дата: 18 Авг 2006 08:44 ° Поправил: andrei_a


» persei
persei
Участник

206 # Дата: 16 Авг 2006 08:45
Цитата

andrei_a
если в $_SERVER нет request_uri то я не я он есть даже при safe mode


Вот файл index.php (это - Koobi):

++++++

<?php
$_REQUEST = (isset($_REQUEST)) ? $_REQUEST : "";
if(isset($_REQUEST['area']) && !is_numeric($_REQUEST['area']))
{
ob_start();
header("Location:index.php?area=1");
exit;
}
define("BASEDIR", dirname(__FILE__));
include(BASEDIR . "/inc/config.php");
include(BASEDIR . "/functions/Func.Session.php");
ob_start();
session_start();
session_name('koobi');
require(BASEDIR . "/inc/init.php");

//=================================================================
// Verschlьsselung aktiv?
//=================================================================
if(defined("SSLMODE") && SSLMODE==1 && $_SERVER['SERVER_PORT']=='80') header("Location:".redir()."");
if(defined("SSLMODE") && SSLMODE!=1 && $_SERVER['SERVER_PORT']=='443') header("Location:".redir()."");

//=================================================================
// Url der Seite fьr weitere Aktionen festlegen
//=================================================================
define("HPURL", HTTPSSL . $_SERVER['HTTP_HOST'] . str_replace("/index.php", "", $_SERVER['PHP_SELF']) . "/");

//=================================================================
// Wenn kein Shop vorhanden ist, weiterleiten, wenn angefordert
//=================================================================
if(isset($_REQUEST['p']) && $_REQUEST['p']=='shop' && ISSHOP != 1) header("Location:index.php");
if(isset($_REQUEST['p']) && $_REQUEST['p']=='register') header("Location:index.php?p=signup");

$expire = time() + (60 * 10);
$sql = $db->Query("DELETE FROM " . PREFIX . "_useronline WHERE expire <= '" . time() . "'");
$sql = $db->Query("SELECT ip FROM " . PREFIX . "_useronline WHERE ip='" . $_SERVER['REMOTE_ADDR'] . "' limit 1");
$num = $sql->numrows();

if ($num < 1)
$sql = $db->Query("INSERT INTO " . PREFIX . "_useronline (ip,expire,uname,invisible) VALUES ('" . $_SERVER['REMOTE_ADDR'] . "','$expire','" . (defined("UNAME") ? UNAME : "UNAME") . "','" . (defined("INVISIBLE") ? INVISIBLE : "INVISIBLE") . "')");
else
$sql = $db->Query("UPDATE " . PREFIX . "_useronline set uname='" . (defined("UNAME") ? UNAME : "UNAME") . "' WHERE ip='" . $_SERVER['REMOTE_ADDR'] . "'");


if (!isset($_REQUEST['p'])) {
$_REQUEST['p'] = "index";
$loader = "?";
}

$buffer = str_replace(array(":", "/", "..", ".", ";", "\\", "http", "ftp"), "", $_REQUEST['p']);
$sql = $db->Query("SELECT area_template,active FROM " . PREFIX . "_areas WHERE area_id='".(int)$area."'");
$row = $sql->fetchrow();

//=================================================================
// Wenn Sektion nicht aktiv ist und ein Passwort gesetzt wurde,
// wird hier nun ьberprьft, ob das Passwort gьltig ist. Wenn ja,
// hat der Besucher Zugriff
//=================================================================
if ($row->active != 1) {
if (!($HTTP_SESSION_VARS['secpass' . $area])) {
$HTTP_SESSION_VARS['secpass' . $area] = $_GET['pass'];
}
$sql = $db->Query("SELECT pass,tmpl FROM " . PREFIX . "_areas WHERE area_id='".(int)$area."'");
$row = $sql->fetchrow();

if (($row->pass == "") || ($row->pass != $HTTP_SESSION_VARS['secpass' . $area])) {
$HTTP_SESSION_VARS['secpass' . $area] = "";
echo $row->tmpl;
exit();
}
}

$tmpl = new Koobi("templates/$THEME/");
$tmpl->assign('theme', $THEME);
$tmpl->assign('pref', $pref);

@include('inc/globals.php');

if(ISSHOP==1)
{
if(!@include( BASEDIR . "/system/shop/shopinc.php"))
echo '<div><strong>Fehler:</strong> Shop konnte nicht initialisiert werden.</div>';
}

if (!@include("system/$buffer.php"))
{
$EOUT = msg("error_once", "modulenotfound", str_replace("__URL__", "index.php", $lang['redirect']), "index.php");
$NOOUT = 1;
}
//=================================================================
// HIER WERDEN DIE EINZELNEN BEREICHE DEM JEWEILIGEN
// TEMPLATE ZUGEWIESEN (ADMIN->Container (Seite))
//=================================================================
switch ($_REQUEST['p']) {
case "pic" :
case "gallerypic" : $template = fetchmaintemplate("27"); break;
case "misc" : $template = fetchmaintemplate("13"); break;
case "shopimage" : $template = fetchmaintemplate("55"); break;
case "userlist" : $template = fetchmaintemplate("14"); break;
case "manufacturer" : $template = fetchmaintemplate("22"); break;
case "tell" : $template = fetchmaintemplate("23"); break;
case "static" : $template = fetchmaintemplate("24"); break;
case "poll" : $template = fetchmaintemplate("25"); break;
case "faq" : $template = fetchmaintemplate("26"); break;
case "gallery" : $template = fetchmaintemplate("27"); break;
case "register" : $template = fetchmaintemplate("28"); break;
case "pwlost" : $template = fetchmaintemplate("29"); break;
case "ignorelist" : $template = fetchmaintemplate("30"); break;
case "changedetails" : $template = fetchmaintemplate("31"); break;
case "changepw" : $template = fetchmaintemplate("32"); break;
case "pn" : $template = fetchmaintemplate("33"); break;
case "news" : $template = fetchmaintemplate("34"); break;
case "index" : $template = fetchmaintemplate("12"); break;
case "product": $template = fetchmaintemplate("36");break;
case "downloads": $template = fetchmaintemplate("40");break;
case "links": $template = fetchmaintemplate("43");break;
case "downloadfile": $template = fetchmaintemplate("42");break;
case "contact" : $template = fetchmaintemplate("45"); break;
case "articles" : $template = fetchmaintemplate("38"); break;
case "guestbook" : $template = fetchmaintemplate("47"); break;
case "calendar" : $template = fetchmaintemplate("50"); break;
case "shop" : $template = fetchmaintemplate("52"); break;
case "showforums" :
case "showforum" :
case "showtopic" :
case "newpost" :
case "addpost" :
case "move" :
case "deltopic" :
case "newcategory" :
case "newforum" :
case "forum";
case "newtopic" :
case "addpost" :
case "addtopic" : $template = fetchmaintemplate("35");
break;
default : $template = fetchmaintemplate("12");
}

if (!$template) $template = fetchmaintemplate("12");

//=================================================================
// KALENDER
//=================================================================
$d = getdate(time());
$year = (isset($_REQUEST['koobi_jahr']) && $_REQUEST['koobi_jahr'] != '') ? (int)$_REQUEST['koobi_jahr'] : $d['year'];
$month = (isset($_REQUEST['koobi_monat']) && $_REQUEST['koobi_monat'] != '') ? (int)$_REQUEST['koobi_monat'] : $d['mon'];
$cal = new KoobiCalendar;

$tmpl->assign('simple_calendar', $cal->getMonthView($month, $year, 'calendar/calendar_small.tpl','1','small'));

//=================================================================
// SHOPNAVIGATION
//=================================================================
if(ISSHOP==1)
{
$categs = array();
get_shop_categs_simple(0, '', $categs, $area);
$tmpl->assign('shopnavi', $categs);
}

//=================================================================
// WENN USER NICHT ANGEMELDET IST, LO

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:37553, gzipped size:11092

Mp3 Download || Webs Studio™ || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]