GoRSS

GoRSS
Рейтинг
138
Регистрация
29.07.2013
place_id надо бы в скобках заключить..

$_GET[(place_id)] ??

с этой строкой то же непонятно, что может означать &photo ?

Ур может быть разным, place.php?place_id=2&photo или place.php?place_id=2&map или place.php?place_id=2&video

а дальше

if (isset($_GET[place_id])) {
if (isset($_GET[photo])) { ... }
else if (isset($_GET[map])) { ... }
else {...}
}

Теперь всё встало на места, спасибо всем.

Сам удивляюсь, что до сих пор не понял. Стоило бы изучить эту тему, но фронт работы толкает в гриву.

Логика моих действий:

Во всех путях обязательно присутствуют две переменные: placesef и place_id. По последней из них идет запрос к базе SELECT * FROM ... WHERE id='$place_id'.

Т.к. начало урла у всех одинаково, я добавлял остальные переменные, иначе как апач поймет, что куда мне надо преобразовывать.

RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+).html$ place.php?placesef=$1&place_id=(.)&art=(.)&artsef=$2 [QSA,L]
RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)/$ place.php?placesef=$1&place_id=(.)&hotels=(.)&hotcatsef=$2 [QSA,L]

Если бы я написал RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+).html$ place.php?placesef=$1&place_id=$3&art=$4&artsef=$2 [QSA,L] не односиськой, а $номер, это значение появилось бы в урле? Экспериментировал, пока не ушло лишнее из урла.

Т.е. я могу запрос вида

RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+).html$ place.php?placesef=$1&place_id=(.)&art=(.)&artsef=$2 [QSA,L]
сократить до
RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+).html$ place.php?placesef=$1&$3&$4&artsef=$2 [QSA,L]

и лишнее уйдет с темже успехом?

---------- Добавлено 22.12.2014 в 12:30 ----------

и какие именно каталоги не открываются?

Статичные папки, например http://joysea.ru/css/

Спасибо, но уже помчался на php это делать. На деле оказывается проще, чем при планировании. Последний вопрос, и моя благодарность выходит за рамки границ.

RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{HTTP_HOST} www.joysea\.ru
RewriteRule ^(.*)$ http://joysea.ru/$1 [R=permanent,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://joysea.ru/ [R=301,L]
AddDefaultCharset UTF-8

RewriteRule ^([-a-zA-Z0-9_]+)/$ place.php?placesef=$1&place_id=(.) [QSA,L]
RewriteRule ^([-a-zA-Z0-9_]+)/photos.html$ place.php?placesef=$1&place_id=(.)&photo [QSA,L]
RewriteRule ^([-a-zA-Z0-9_]+)/karta.html$ place.php?placesef=$1&place_id=(.)&map [QSA,L]
RewriteRule ^([-a-zA-Z0-9_]+)/pogoda.html$ place.php?placesef=$1&place_id=(.)&pogoda [QSA,L]
RewriteRule ^([-a-zA-Z0-9_]+)/svodka.html$ place.php?placesef=$1&place_id=(.)&svodka [QSA,L]
RewriteRule ^([-a-zA-Z0-9_]+)/video.html$ place.php?placesef=$1&place_id=(.)&video [QSA,L]

RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+).html$ place.php?placesef=$1&place_id=(.)&art=(.)&artsef=$2 [QSA,L]
RewriteRule ^([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)/$ place.php?placesef=$1&place_id=(.)&hotels=(.)&hotcatsef=$2 [QSA,L]

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

Делайте вида ИМяГруппы_база и они объединятся во второй уровень. Для пробы пару пустышек сделайте. Например, info_car, info_tech

ivan-lev, я вас не понял. Каждый урл писать в .htaccess не варик, страниц over 10k. Да и новые как, тоже постоянно писать? Плохо. Тянется переменная с названием категории, дальше по ней идет запрос в базу.

siv1987, вы прав. Но всё же переменная place_id остается до полной переиндексации. Вопрос #2:

как из этого

RewriteRule ^([-a-zA-Z0-9_]+)/$ place.php?place_id=2&placesef=$1 [QSA,L]
сделать редирект наоборот? С адресов place.php?place_id=2&placesef=$1 на ^([-a-zA-Z0-9_]+)/$, желательно посредством htaccess

$res=mysql_query("SELECT * FROM users WHERE referer_id=''"); //выбираем всех пользователей, у которых пустой реф_айди

while ($row=mysql_fetch_assoc($res)) {

echo '<option value="'.$row[id].'">$row[username]</option>';

$res2=mysql_query("SELECT * FROM users WHERE referer_id='$row[id]'"); // все рефы этого пользователя

while ($row2=mysql_fetch_assoc($res2)) {

echo '<option value="'.$row2[id].'">--$row2[username]</option>';

// и здесь еще несколько раз вложить цикл для рефов рефов

}

}

Так было бы лучше лет 10 назад)) substitution это правая сторона условия?

Урл: place.php?place_id=2&placesef=sochi . В новых урлах мне нужно видеть в адресной строке только значение переменной placesef для красоты, но при этом сохранять переменную place_id, т.к. все запросы исходя из ID, которое place_id и обозначает.

Типа один пишем, два в уме. Значение одной переменной в адресе, но вторую держим в памяти дабы обращаться к базе с её (второй) значением. Выкинуть мне её нужно было чтобы урл не получался вида /2sochi/ или /2/sochi , т.е. не показывая id.

siv1987:
RewriteRule ^([\w]+)/$ place.php?placesef=$1 [QSA,L]

Не, не то. Но уже сделал.

siv1987:
place_id=(.)(.)

у меня вирус порнухи вылез, сиськи во весь экран. Вы хакер?

Вот тут расписал алгоритм http://phpforum.su/index.php?showtopic=84444&hl=# , проблема тоже решена вот так

RewriteRule ^([-a-zA-Z0-9_]+)/$ place.php?placesef=$1&place_id=(.) [QSA,L]
но пока не знаю, не слышал критики, может не правильно.

Отвечаю на ваш вопрос:

1. Весь код написан мной, place_id содержит идентификатор нужного курорта, всё крутится вокруг него. Переписывать не вариант, полжизни уйдет, кода слишком много. Игнорировать мне нужно лишь для генерации адреса, а сама переменная должна сохраняться, иначе, как написал выше, сайт рухнет.

2. [QSA,L] - значение флага L не знаю, он во всех примерах. А вот QSA нужен мне для микса в урле, чтобы можно было дописывать параметры. Например, был урл place.php?place_id=2, стал /sochi/ . И так как работа по переходу к ЧПУ-урлам длительная, для постепенного хода указан флаг QSA, чтобы можно было делать такого вида /sochi/?articles=1&art=12.

Всего: 1012