nexus » 2013.06.16 07:10

Здрасте ребят!
Помогите решить проблемку, туплю уже два дня ..
Хочу сделать чтобы ссылки на сайте имели такой вид httр://site.ru/nexus для анкет и такие для статей http://site.ru/vse-obo-vsem/
Вот код .htaccess

Код:

1
2
3
4
5
# этот код для папок.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?path=$1 [L,QSA]

Код работает норм. Но как сделать чтобы еще и в профили пользователей были такие же ссылки. Я пробовал перечислять эти же условия, ниже этого кода, вот так

Код:

1
2
3
4
# этот код для анкет. profile.php?id=nexus
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) profile.php?id=$1 [L,QSA]

Но работает только либо анкеты либо папки. Ну конечно в данном примере работает только анкеты..
Вот как это объединить не могу вкурить ( я нуб в .htaccess. возможно поможет флаг [OR], но куда его вставлять не знаю ( помогите пожалуйста :-)
Кстати раздела на этом форуме посвященному этому ЯП нет

Gemorroj » 2013.06.16 09:13

а никак не сделать. выноси статьи в отдельную папку например. иначе просто не понятно перенаправлять на профиль или статью

nexus » 2013.06.16 09:22

Gemorroj и все же это как то можно сделать.. Тот же вконтактик, группы и профили. У дурова спросить чтоли :D

Gemorroj » 2013.06.16 09:29

там 1 страница значит, и названия уникальны

nexus » 2013.06.16 11:57

дак хоть и 1 файл как условие написать (

Gemorroj » 2013.06.16 12:17

Код:

1
span style="color: #0000BB"><?php$db = new PDO('');$qUsers = $db->prepare('SELECT COUNT(1) FROM users WHERE login = ?');$qPosts = $db->prepare('SELECT COUNT(1) FROM posts WHERE subject = ?');if ($qUsers->execute(array($_GET['name'])) && $qUsers->fetchColumn() > 0) { // это пользоватли include 'tpl_for_users.php';} elseif ($qPosts->execute(array($_GET['name'])) && $qPosts->fetchColumn() > 0) { // это статьи include 'tpl_for_posts.php';} else { // это хз что include 'tpl_for_error.php';}
nexus » 2013.06.16 15:36

Gemorroj не знаю PDO :) Но за идею спасибо, всё же просто!

$path = ($_GET['path'])? trim($_GET['path']) : '';
$qUsers = mysql_fetch_assoc(mysql_query("SELECT * FROM `users` WHERE `login` = '".mysql_real_escape_string($path)."' LIMIT 1"));
if($qUsers !== false && $path)
include'profile.php';
else
include'files.php';

nexus » 2013.06.17 12:05

Gemorroj, кстати, не по теме.. интересно прост
SELECT COUNT(*) - зацепить всё что можно а SELECT COUNT(1) это что делает? :)

Gemorroj » 2013.06.17 12:19

то же самое.
на сколько я помню, в innodb не хранилась метаинформация по кол-ву записей и он ее пересчитывал выбирая указанные поля (* - все), соответственно 1 - никаких данных трогать не надо. вероятно в новых версиях mysql это уже исправили, но хз.

nexus » 2013.06.17 12:36

спасибо =)