PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): « 1 [2]

> Найдено сообщений: 24
lex-romanow Отправлено: 16 Мая, 2016 - 23:29:37 • Тема: Разный ответ от сервера, print_r($_SERVER) • Форум: Программирование на PHP

Ответов: 2
Просмотров: 690
Всем привет. Столкнулся с такой загадкой. На субдомене представлена форма авторизации менеджера банка, работает на $.ajax. Запрос идет на основной домен. Я авторизуюсь без проблем, а менеджер банка с офиса не может авторизоваться. Думаю дело в их безопасности. Сайт на HTTP, HTTPS пока в планах. Решил я распечатать print_r($_SERVER) своей авторизации и авторизации менеджера и о чудо, они разные. Почему, я пока в догадках. Как решить проблему? Почему нет HTTP_REFERER у менеджера?

Моя авторизация.
CODE (no):
скопировать код в буфер обмена
  1. Array
  2. (
  3.         [PHP_FCGI_CHILDREN] => 0
  4.         [PATH] => /etc:/bin:/sbin:/usr/bin:/usr/sbin
  5.         [PHP_FCGI_MAX_REQUESTS] => 400
  6.         [PWD] => /var/fcgi/***/www.site.com.ua
  7.         [PHPRC] => /usr/local/php54/etc/
  8.         [PHP_INI_SCAN_DIR] => /var/fcgi/***/www.site.com.ua/
  9.         [ORIG_SCRIPT_NAME] => /cgi-bin/php.cgi
  10.         [ORIG_PATH_TRANSLATED] => /sata1/home/users/***/www/www.site.com.ua/controller/redirect.php
  11.         [ORIG_PATH_INFO] => /controller/redirect.php
  12.         [ORIG_SCRIPT_FILENAME] => /var/fcgi/***/www.site.com.ua/php.cgi
  13.         [SCRIPT_NAME] => /controller/redirect.php
  14.         [REQUEST_URI] => /controller/redirect.php
  15.         [QUERY_STRING] =>
  16.         [REQUEST_METHOD] => POST
  17.         [SERVER_PROTOCOL] => HTTP/1.0
  18.         [GATEWAY_INTERFACE] => CGI/1.1
  19.         [REDIRECT_URL] => /controller/redirect.php
  20.         [REMOTE_PORT] => 42217
  21.         [SCRIPT_FILENAME] => /sata1/home/users/***/www/www.site.com.ua/controller/redirect.php
  22.         [SERVER_ADMIN] => ***
  23.         [DOCUMENT_ROOT] => /sata1/home/users/***/www/www.site.com.ua
  24.         [REMOTE_ADDR] => ***
  25.         [SERVER_PORT] => 80
  26.         [SERVER_ADDR] => ***
  27.         [SERVER_NAME] => site.com.ua
  28.         [SERVER_SOFTWARE] => Apache/2.2.24 (FreeBSD)
  29.         [SERVER_SIGNATURE] => <address>Apache/2.2.24 (FreeBSD) Server at <a href="mailto:***">site.com.ua</a> Port 80</address>
  30.         [HTTP_ORIGIN] => http://m.site.com.ua
  31.         [CONTENT_LENGTH] => 19
  32.         [HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
  33.         [HTTP_ACCEPT] => */*
  34.         [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 5.1; rv:46.0) Gecko/20100101 Firefox/46.0
  35.         [CONTENT_TYPE] => application/x-www-form-urlencoded; charset=UTF-8
  36.         [HTTP_COOKIE] => ***
  37.         [HTTP_X_FORWARDED_PROTOCOL] => http
  38.         [HTTP_X_REAL_IP] => ***
  39.         [HTTP_HOST] => site.com.ua
  40.         [HTTP_CONNECTION] => close
  41.         [REDIRECT_STATUS] => 200
  42.         [REDIRECT_HANDLER] => application/x-httpd-fastphp
  43.         [FCGI_ROLE] => RESPONDER
  44.         [PHP_SELF] => /controller/redirect.php
  45.         [REQUEST_TIME_FLOAT] => 1463401319.1361
  46.         [REQUEST_TIME] => 1463401319
  47.         [HTTP_REFERER] => http://m.site.com.ua/?tab=offer
  48.         [HTTP_ACCEPT_ENCODING] => gzip, deflate
  49. )


Авторизация менеджера.
CODE (no):
скопировать код в буфер обмена
  1. Array
  2. (
  3.         [PHP_FCGI_CHILDREN] => 0
  4.         [PATH] => /etc:/bin:/sbin:/usr/bin:/usr/sbin
  5.         [PHP_FCGI_MAX_REQUESTS] => 400
  6.         [PWD] => /var/fcgi/***/www.site.com.ua
  7.         [PHPRC] => /usr/local/php54/etc/
  8.         [PHP_INI_SCAN_DIR] => /var/fcgi/***/www.site.com.ua/
  9.         [ORIG_SCRIPT_NAME] => /cgi-bin/php.cgi
  10.         [ORIG_PATH_TRANSLATED] => /sata1/home/users/***/www/www.site.com.ua/controller/redirect.php
  11.         [ORIG_PATH_INFO] => /controller/redirect.php
  12.         [ORIG_SCRIPT_FILENAME] => /var/fcgi/***/www.site.com.ua/php.cgi
  13.         [SCRIPT_NAME] => /controller/redirect.php
  14.         [REQUEST_URI] => /controller/redirect.php
  15.         [QUERY_STRING] =>
  16.         [REQUEST_METHOD] => POST
  17.         [SERVER_PROTOCOL] => HTTP/1.0
  18.         [GATEWAY_INTERFACE] => CGI/1.1
  19.         [REDIRECT_URL] => /controller/redirect.php
  20.         [REMOTE_PORT] => 48813
  21.         [SCRIPT_FILENAME] => /sata1/home/users/***/www/www.site.com.ua/controller/redirect.php
  22.         [SERVER_ADMIN] => ***
  23.         [DOCUMENT_ROOT] => /sata1/home/users/***/www/www.site.com.ua
  24.         [REMOTE_ADDR] => ***
  25.         [SERVER_PORT] => 80
  26.         [SERVER_ADDR] => ***
  27.         [SERVER_NAME] => site.com.ua
  28.         [SERVER_SOFTWARE] => Apache/2.2.24 (FreeBSD)
  29.         [SERVER_SIGNATURE] => <address>Apache/2.2.24 (FreeBSD) Server at <a href="mailto:***">site.com.ua</a> Port 80</address>
  30.         [HTTP_CACHE_CONTROL] => no-cache
  31.         [HTTP_VIA] => 1.1 HQS-00-026, 1.1 srv-extsquid-01 (squid/3.3.8)
  32.         [HTTP_PRAGMA] => no-cache
  33.         [HTTP_ORIGIN] => http://m.site.com.ua
  34.         [CONTENT_LENGTH] => 19
  35.         [HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
  36.         [HTTP_ACCEPT] => */*
  37.         [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0
  38.         [CONTENT_TYPE] => application/x-www-form-urlencoded; charset=UTF-8
  39.         [HTTP_COOKIE] => ***
  40.         [HTTP_X_FORWARDED_PROTOCOL] => http
  41.         [HTTP_X_REAL_IP] => ***
  42.         [HTTP_HOST] => site.com.ua
  43.         [HTTP_CONNECTION] => close
  44.         [REDIRECT_STATUS] => 200
  45.         [REDIRECT_HANDLER] => application/x-httpd-fastphp
  46.         [FCGI_ROLE] => RESPONDER
  47.         [PHP_SELF] => /controller/redirect.php
  48.         [REQUEST_TIME_FLOAT] => 1463401329.4707
  49.         [REQUEST_TIME] => 1463401329
  50. )
lex-romanow Отправлено: 24 Апреля, 2016 - 18:15:41 • Тема: Обрамление текстовых сcылок тегом <a> • Форум: Регулярные выражения

Ответов: 1
Просмотров: 321
Написал регулярку, которая ищет и обрамляет текстовые ссылки тегом <a>, но регулярка захватывает рядом стоящие точки, запятые, это при случае если рядом с текстовой ссылкой идут эти символы. Фтп ссылок не будет, поэтому я не учел в регулярке. Мой пример можно посмотреть здесь - http://rubular[dot]com/r/P04ZNa9Td6. Прошу помочь мне исправить этот момент. Благодарю!
lex-romanow Отправлено: 03 Апреля, 2016 - 13:43:26 • Тема: Какой из запросов лучше? • Форум: Работа с СУБД

Ответов: 1
Просмотров: 681
Всем привет. Хочу услышать мнения опытных людей, какой из абсолютно одинаковых запросов лучше?

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT a.`client_bid_id`
  2. FROM `client_bid` a
  3. WHERE a.`client_bid_blocked` = 'n'
  4. AND NOT EXISTS
  5. (
  6. SELECT 1
  7. FROM `client_login` b
  8. WHERE b.`client_id` = a.`client_id`
  9. AND b.`client_login_type` = 'success'
  10. AND b.`client_login_date` > NOW() - INTERVAL 1 HOUR
  11. )

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT a.`client_bid_id`
  2. FROM `client_bid` a
  3. LEFT JOIN `client_login` b ON (b.`client_id` = a.`client_id` AND b.`client_login_type` = 'success' AND b.`client_login_date` > NOW() - INTERVAL 1 HOUR)
  4. WHERE a.`client_bid_blocked` = 'n'
  5. AND b.`client_id` IS NULL

Прочитал довольно много, но так и не решил для себя - в каких случаях лучше not exits, а в каких - left join ... is null.

not in у меня сразу отпал, как самый худший.

План первого запроса:

CODE (no):
скопировать код в буфер обмена
  1. "id"    "select_type"   "table" "type"  "possible_keys" "key"   "key_len"       "ref"   "rows"  "Extra"
  2. "1"     "PRIMARY"       "a"     "ALL"   \N      \N      \N      \N      "12"    "Using where"
  3. "2"     "DEPENDENT SUBQUERY"    "b"     "ALL"   \N      \N      \N      \N      "1"     "Using where"

План второго запроса:

CODE (no):
скопировать код в буфер обмена
  1. "id"    "select_type"   "table" "type"  "possible_keys" "key"   "key_len"       "ref"   "rows"  "Extra"
  2. "1"     "SIMPLE"        "a"     "ALL"   \N      \N      \N      \N      "12"    "Using where"
  3. "1"     "SIMPLE"        "b"     "ALL"   \N      \N      \N      \N      "1"     "Using where; Not exists; Using join buffer (Block Nested Loop)"

Индексы я пока не применял, меня другое интересует.
lex-romanow Отправлено: 27 Октября, 2015 - 14:24:39 • Тема: Выбрать просроченные заявки • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 63
Мелкий пишет:
В зависимости от версии mysql и температуры луны может оказаться эффективнее not exists по подзапросу или LEFT JOIN

спасибо, через not exists сделал
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT a.`client_bid_id`
  2. FROM `client_bid` a
  3. WHERE a.`client_bid_blocked` = 'n'
  4. AND NOT EXISTS
  5. (
  6.         SELECT 1
  7.         FROM `client_login` b
  8.         WHERE b.`client_id` = a.`client_id`
  9.         AND b.`client_login_type` = 'success'
  10.         AND b.`client_login_date` > NOW() - INTERVAL 1 DAY
  11. )
lex-romanow Отправлено: 27 Октября, 2015 - 11:20:30 • Тема: Выбрать просроченные заявки • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 63
sqlfiddle работает с переменным успехом, поэтому выложу тут код:

Таблицы и заполнение:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `client_bid` (
  2.   `client_bid_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `client_id` int(8) UNSIGNED NOT NULL DEFAULT '0',
  4.   `client_bid_blocked` enum('y','n') NOT NULL DEFAULT 'n',
  5.   PRIMARY KEY (`client_bid_id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  7.  
  8. INSERT INTO `client_bid` (`client_bid_id`, `client_id`, `client_bid_blocked`) VALUES
  9.         (1, 1, 'n'),
  10.         (2, 4, 'y'),
  11.         (3, 4, 'n');
  12.  
  13. CREATE TABLE `client_login` (
  14.   `client_login_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  15.   `client_id` int(8) UNSIGNED NOT NULL DEFAULT '0',
  16.   `client_login_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  17.   `client_login_type` enum('wait','success','failed') NOT NULL DEFAULT 'wait',
  18.   PRIMARY KEY (`client_login_id`)
  19. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  20.  
  21. INSERT INTO `client_login` (`client_login_id`, `client_id`, `client_login_date`, `client_login_type`) VALUES
  22.         (1, 1, '2015-05-24 16:06:03', 'success'),
  23.         (2, 1, '2015-05-24 18:19:39', 'success'),
  24.         (3, 1, '2015-05-24 18:21:07', 'success'),
  25.         (4, 1, '2015-05-24 18:22:21', 'success'),
  26.         (5, 1, '2015-05-24 18:24:35', 'success'),
  27.         (6, 1, '2015-05-28 16:20:42', 'success'),
  28.         (7, 1, '2015-05-28 16:32:56', 'success'),
  29.         (8, 1, '2015-05-28 16:46:47', 'success'),
  30.         (9, 1, '2015-05-28 17:46:57', 'success'),
  31.         (10, 1, '2015-05-29 18:56:03', 'success'),
  32.         (11, 1, '2015-05-29 19:28:52', 'success'),
  33.         (12, 1, '2015-05-29 19:32:25', 'success'),
  34.         (13, 1, '2015-05-29 19:57:37', 'success'),
  35.         (14, 1, '2015-05-30 12:37:56', 'wait'),
  36.         (15, 1, '2015-05-30 12:38:50', 'failed'),
  37.         (16, 1, '2015-05-30 12:38:58', 'failed'),
  38.         (17, 1, '2015-05-30 13:21:18', 'wait'),
  39.         (18, 1, '2015-05-30 20:12:11', 'success'),
  40.         (19, 1, '2015-06-02 20:49:12', 'success'),
  41.         (20, 1, '2015-06-02 22:52:09', 'success'),
  42.         (21, 1, '2015-06-02 22:54:32', 'success'),
  43.         (22, 1, '2015-06-03 13:45:09', 'success'),
  44.         (23, 1, '2015-06-05 12:47:24', 'success'),
  45.         (24, 1, '2015-06-05 19:50:08', 'success'),
  46.         (25, 1, '2015-07-21 10:09:48', 'success'),
  47.         (26, 1, '2015-07-21 10:29:47', 'wait'),
  48.         (27, 1, '2015-07-21 10:31:03', 'success'),
  49.         (28, 1, '2015-07-21 10:31:21', 'failed'),
  50.         (29, 1, '2015-07-21 14:59:10', 'wait'),
  51.         (30, 1, '2015-07-21 14:59:45', 'success'),
  52.         (31, 1, '2015-07-21 15:00:32', 'failed'),
  53.         (39, 1, '2015-07-21 20:01:37', 'wait'),
  54.         (40, 1, '2015-07-21 20:13:12', 'success'),
  55.         (41, 1, '2015-07-25 14:08:54', 'wait'),
  56.         (42, 1, '2015-07-25 14:20:34', 'wait'),
  57.         (43, 1, '2015-07-25 14:24:18', 'wait'),
  58.         (44, 1, '2015-07-26 18:06:08', 'success'),
  59.         (45, 1, '2015-07-26 19:01:59', 'wait'),
  60.         (46, 1, '2015-07-26 21:47:41', 'wait'),
  61.         (47, 1, '2015-07-26 21:53:27', 'wait'),
  62.         (48, 1, '2015-07-26 22:34:46', 'success'),
  63.         (58, 1, '2015-09-17 21:05:48', 'wait'),
  64.         (59, 2, '2015-09-17 22:32:07', 'wait'),
  65.         (60, 2, '2015-09-17 22:33:46', 'wait'),
  66.         (61, 3, '2015-09-17 22:36:34', 'wait'),
  67.         (62, 1, '2015-09-17 22:43:50', 'wait'),
  68.         (63, 1, '2015-09-17 22:44:31', 'wait'),
  69.         (64, 1, '2015-09-18 01:13:20', 'wait'),
  70.         (65, 1, '2015-09-18 01:14:13', 'wait'),
  71.         (66, 1, '2015-10-16 19:30:13', 'success'),
  72.         (67, 1, '2015-10-22 23:22:31', 'success'),
  73.         (68, 1, '2015-10-23 17:31:42', 'success'),
  74.         (69, 1, '2015-10-23 17:32:09', 'failed'),
  75.         (70, 1, '2015-10-23 17:34:57', 'success'),
  76.         (71, 1, '2015-10-23 17:36:17', 'success'),
  77.         (72, 1, '2015-10-23 17:37:34', 'success'),
  78.         (73, 1, '2015-10-23 17:58:51', 'success'),
  79.         (74, 1, '2015-10-23 18:07:19', 'wait'),
  80.         (75, 1, '2015-10-23 18:07:46', 'failed'),
  81.         (76, 1, '2015-10-23 18:09:05', 'success'),
  82.         (77, 1, '2015-10-23 18:10:40', 'success'),
  83.         (78, 1, '2015-10-23 19:02:15', 'success'),
  84.         (79, 1, '2015-10-23 19:04:27', 'success'),
  85.         (80, 1, '2015-10-23 19:05:48', 'success'),
  86.         (81, 1, '2015-10-23 21:28:25', 'success'),
  87.         (82, 1, '2015-10-23 21:32:41', 'success'),
  88.         (83, 1, '2015-10-23 21:34:19', 'success'),
  89.         (84, 1, '2015-10-23 21:36:24', 'success'),
  90.         (85, 1, '2015-10-23 21:37:30', 'success'),
  91.         (86, 1, '2015-10-23 21:56:07', 'wait'),
  92.         (87, 1, '2015-10-23 22:09:11', 'wait'),
  93.         (88, 1, '2015-10-23 22:11:06', 'success'),
  94.         (89, 1, '2015-10-23 22:17:27', 'success'),
  95.         (90, 1, '2015-10-24 20:04:45', 'success'),
  96.         (91, 1, '2015-10-24 20:16:37', 'success'),
  97.         (92, 1, '2015-10-26 19:14:43', 'success'),
  98.         (93, 1, '2015-10-26 19:32:34', 'success'),
  99.         (94, 4, '2015-10-27 00:15:34', 'success'),
  100.         (95, 4, '2015-10-26 01:25:46', 'failed');

Запрос по-первой ссылке (Запрос конечно не верен, не могу придумать как его верно написать. Пока выводит все.):
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT a.`client_bid_id`,
  2.            b.`client_login_date`
  3. FROM `client_bid` a
  4. JOIN `client_login` b ON (b.`client_id` = a.`client_id` AND b.`client_login_type` = 'success')
  5. WHERE a.`client_bid_blocked` = 'n'

Запрос по-второй ссылке (Пока указал 1 DAY. По первым тестам работает, но мне не нравится, что пока просрочка не сработает, то выводится поле с пустым значением во втором столбце второй строки, нужно вторую строку вообще не выводить в этом случае, но как? И вообще как запрос составлен, лучше можно?):
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `client_bid`.`client_bid_id` AS `id`,
  2.        (
  3.                         SELECT `client_login`.`client_login_date`
  4.                         FROM `client_login`
  5.                         WHERE `client_login`.`client_id` = `client_bid`.`client_id`
  6.                         AND `client_login`.`client_login_type` = 'success'
  7.                         AND `client_login`.`client_login_date` < NOW() - INTERVAL 1 DAY
  8.                         ORDER BY `client_login`.`client_login_date` DESC
  9.                         LIMIT 1
  10.                  ) AS `date`
  11. FROM `client_bid`
  12. WHERE `client_bid`.`client_bid_blocked` = 'n'

(Добавление)
Описание таблиц с полями и постановка задачи.

client_bid - таблица заявок
-- client_bid_id - ид заявки
-- client_id - ид того кто заявку составил
-- client_bid_blocked - заблокирована или нет заявка

client_login - таблица входов клиента в панель
-- client_login_id - ид входа
-- client_id - ид того кто вошел в панель
-- client_login_date - дата и время входа
-- client_login_type - тип входа (wait - ожидание кода подтверждения входа, success - успешный вход, failed - ошибка при входе)

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

Во втором запросе я почти добился того, что нужно, но хотелось бы довести запрос до ума.
lex-romanow Отправлено: 26 Октября, 2015 - 23:59:20 • Тема: Выбрать просроченные заявки • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 63
Всем привет. Есть 2 таблицы - "заявки" и "логи авторизации клиента". Связь между таблицами по полю `client_id`. Посмотрите пример, там я наглядно все выложил - тыц. Запрос конечно не верен, не могу придумать как его верно написать. Пока выводит все.

Как я вижу работу запроса - запрос выбирает все заявки, которые не заблокированы, потом ищет владельца заявки со статусом success и смотрит дату последнего его входа (сортируем по убыванию дабы самая свежая дата была вверху, указываем лимит 1), если дата последнего входа превышает 1 день, то выводим ИД этой заявки для дальнейшей обработки.

Прошу помочь с запросом, перепробовал разные вариации запроса, но все не так. Спасибо.
(Добавление)
Вот написал запрос - тыц, пока указал 1 DAY. По первым тестам работает, но мне не нравится, что пока просрочка не сработает, то выводится поле с пустым значением во втором столбце второй строки, нужно вторую строку вообще не выводить в этом случае, но как? И вообще как запрос составлен, лучше можно?
lex-romanow Отправлено: 20 Августа, 2015 - 17:05:09 • Тема: Подправить RewriteRule для (суб)домена дабы работал глобально • Форум: Apache и другие веб-серверы

Ответов: 0
Просмотров: 380
Всем привет. Возьмем за пример домен - example.com и субдомен - privatbank.example.com

Структура папок сайта - http://imagizer[dot]imageshack[dot]com/i[dot][dot][dot]/1905/dHki0r[dot]jpg.

Содержимое корневого .htaccess:

CODE (no):
скопировать код в буфер обмена
  1. #Разрешаем кроссдоменное подключение файлов--------------------
  2. Header set Access-Control-Allow-Origin "*"
  3. #--------------------------------------------------------------
  4.  
  5. #Устанавливаем кодировку сайта---------------------------------
  6. AddDefaultCharset utf-8
  7. #--------------------------------------------------------------
  8.  
  9. #Переадресации при разных ошибках------------------------------
  10. ErrorDocument 403 http://example.com/
  11. ErrorDocument 404 /404.php
  12. #--------------------------------------------------------------
  13.  
  14. #Скрываем содержимое папок-------------------------------------
  15. Options All -Indexes
  16. #--------------------------------------------------------------
  17.  
  18. #Включаем преобразование ссылок--------------------------------
  19. RewriteEngine on
  20. #--------------------------------------------------------------
  21.  
  22. #Склеиваем index.php с (суб)доменом---------------------------------
  23. RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
  24. RewriteRule ^index\.php$ / [R=301,L]
  25. #--------------------------------------------------------------
  26.  
  27. #Принудительная подстановка замыкающего слеша------------------
  28. RewriteCond %{REQUEST_URI} /+[^\.]+$
  29. RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
  30. #--------------------------------------------------------------
  31.  
  32. #Склеиваем www с (суб)доменом----------------------------------
  33. RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
  34. RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
  35. #--------------------------------------------------------------
  36.  
  37. #Переадресации на субдомена------------------------------------
  38. RewriteCond %{ENV:REDIRECT_STATUS} !^$
  39. RewriteRule .* - [L]
  40.  
  41. RewriteCond %{HTTP_HOST} ^([^.]*)\.example\.com$
  42. RewriteCond %{REQUEST_URI} !^/domains
  43. RewriteRule ^(.*)$ /domains/%1/$1 [QSA,L]
  44. #--------------------------------------------------------------
  45.  
  46. #Ловим переменные из урл---------------------------------------
  47. RewriteRule ^(.*)(\/|\.html)$ index.php?data=$1&last=$2 [L,QSA]
  48. #--------------------------------------------------------------

Содержимое субдоменного .htaccess:

CODE (no):
скопировать код в буфер обмена
  1. #Ловим переменные из урл---------------------------------------
  2. RewriteRule ^(.*)(\/|\.html)$ index.php?data=$1&last=$2 [L,QSA]
  3. #--------------------------------------------------------------

Пришлось сдублировать, т.к. $_GET на субдомене вертал всегда пустой массив.

Сейчас на главной странице домена и субдомена $_GET вертает пустой массив, на любой другой странице вертает массив, так как и нужно.

CODE (no):
скопировать код в буфер обмена
  1. Array ([data] => dostavka-i-oplata [last] => .html)

1. Хотелось бы удалить .htaccess с субдомена, но нужна ваша помощь в правке корневого RewriteRule
2. Если получится сделать так, то вообще будет замечательно:

а) главный домен

-- на главной странице вертает


-- на странице доставки вертает

CODE (no):
скопировать код в буфер обмена
  1. Array ([data] => dostavka-i-oplata [last] => .html)

б) субдомен

-- на главной странице вертает

CODE (no):
скопировать код в буфер обмена
  1. Array ([domen] => privatbank)

-- на странице доставки вертает

CODE (no):
скопировать код в буфер обмена
  1. Array ([domen] => privatbank [data] => dostavka-i-oplata [last] => .html)

Спасибо! Надеюсь на вашу помощь.
lex-romanow Отправлено: 17 Августа, 2015 - 21:04:07 • Тема: Автоматические субдомены через .htaccess • Форум: Apache и другие веб-серверы

Ответов: 0
Просмотров: 359
Всем привет. Размещаюсь на виртуальном unix хостинге. Возникла потребность в автоматических субдоменах. На хостинге прописал *.example.com. В корне сайта создал папку domains и в ней уже размещаю субдомена www, panel, ... В корне сайта содержится .htaccess со следующим содержимым:

CODE (text):
скопировать код в буфер обмена
  1. #Устанавливаем кодировку сайта
  2. AddDefaultCharset utf-8
  3.  
  4. #Переадресации при разных ошибках
  5. ErrorDocument 403 http://example.com/
  6. ErrorDocument 404 http://example.com/
  7.  
  8. #Скрываем содержимое папок
  9. Options All -Indexes
  10.  
  11. #Включаем преобразование ссылок
  12. RewriteEngine on
  13.  
  14. #Склеиваем index.php с доменом
  15. #RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
  16. #RewriteRule ^index\.php$ / [R=301,L]
  17.  
  18. #Принудительная подстановка замыкающего слеша
  19. #RewriteCond %{REQUEST_URI} /+[^\.]+$
  20. #RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
  21.  
  22. RewriteCond %{ENV:REDIRECT_STATUS} !^$
  23. RewriteRule .* - [L]
  24.  
  25. RewriteCond %{HTTP_HOST} ^([^.]*)\.example\.com$
  26. RewriteCond %{REQUEST_URI} !^/domains
  27. RewriteRule ^(.*)$ /domains/%1/$1 [QSA,L]
  28.  
  29. #Ловим переменные из урл
  30. RewriteRule ^(.*)(\/|\.html)$ index.php?data=$1&last=$2 [L,QSA]

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

При открытии ссылки http://www[dot]example[dot]com/ ошибки нет.
При открытии ссылки http://panel[dot]example[dot]com/ ошибка следующая, за 1 открытие ссылки:

Цитата:
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com
[Mon Aug 17 20:02:50 2015] [notice] [client ...] [mod_vhost_ldap.c] translate: virtual host not found, trying wildcard *.example.com

Как исправить ошибки и реализовать следующее?

Цитата:
1. открыв http://www[dot]example[dot]com/ нас переадресует 301 редиректом на http://example[dot]com/
2. открыв http://www[dot]panel[dot]example[dot]com/ нас переадресует 301 редиректом на http://panel.example.com/

Спасибо!
lex-romanow Отправлено: 24 Сентября, 2014 - 14:47:24 • Тема: Нужна проверка выражения, которое использую в RewriteRule • Форум: Регулярные выражения

Ответов: 0
Просмотров: 109
Всем привет. Написал выражение - http://rubular.com/r/2VLEw0sph9. Визуально разбивает верно, но я не уверен в его 100% качестве. Может у вас будут замечания? Выражение писал для RewriteRule. Пробую подставить:
CODE (text):
скопировать код в буфер обмена
  1. RewriteRule .ua\/(.*)\/[?[^?]](.*) index.php?path=$1&filter=$2 [L]

получаю 404 ошибку. Что я упустил?

Страниц (2): « 1 [2]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB