Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблемы с htaccess и ЧПУ

 PHP.SU

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


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

> Без описания
remenikomer
Отправлено: 13 Января, 2013 - 10:11:40
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Есть файл с правилами, типа:
RewriteRule ^(.*)/list/([0-9]+)/([0-9]+)?([/])?$ $1/list.php?catid=$2&page=$3

Хочу перенаправить со всех субдоменов, при условии, что путь с субдоменом: subdomen.site.ru/articles/
А направить на без субдомена (отрезать его).

Но сейчас проблема в другом - что бы не исправлял в htaccess, ничего не происходит. Как будто какой-то кэш используется. Писал правила с 301 редиректом. Может он что-то сделал?
Как заставить использовать измененных htaccess?
 
 Top
esterio
Отправлено: 13 Января, 2013 - 10:47:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Ето называетьсяфронт контролером
Вот здесь я уже писал как такое делать
http://forum.php.su/topic.php?fo...32705#1358032705
 
 Top
remenikomer
Отправлено: 13 Января, 2013 - 11:08:41
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




esterio пишет:
Ето называетьсяфронт контролером
Вот здесь я уже писал как такое делать
http://forum.php.su/topic.php?forum=71&topic=8633&postid=1358032705#1358032705

спасибо конечно, но я ничего не понял из приведенного примера.
Что нужно сделать, чтобы кэш этот обновлять при необходимости или на время экспериментов?
А еще лучше, помогите, пожалуйста, сформировать нужные ЧПУ.

Как и писал выше, нужно при запросе каталога статей отрезать субдомены (это разные города) и направлять в каталог статей на основном домене.
Есть правила для создания ЧПУ из динамических урл. Поэтому новые правила нужно писать вверху кода и с окончательным параметром (указать L, вроде). А также не знаю, какие правила писать, то ли уже готовые ЧПУ урл перенаправлять, то ли динамические с параметрами $1, $2 и т.д. (в 1-м посте пример правил указал)
Сделал:
PHP:
скопировать код в буфер обмена
  1.  
  2. RewriteCond %{http_host} ^(.+)\.site.ru/articles/ [nc]
  3. RewriteRule ^(.*)$ http://site.ru/articles/$1 [R=302,L]
  4.  


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

Вот что еще для правил есть:
PHP:
скопировать код в буфер обмена
  1.  
  2. RewriteRule ^(.*)/show-([0-9]+)([\-])?([0-9]+)?\.html$ $1/show.php?itemid=$2&page=$4
  3. RewriteRule ^(.*)/show/([0-9]+)/([0-9]+)?([/])?$ $1/show.php?itemid=$2&page=$3
  4. RewriteRule ^(.*)/list-([0-9]+)([\-])?([0-9]+)?\.html$ $1/list.php?catid=$2&page=$4
  5.  

(Отредактировано автором: 13 Января, 2013 - 11:22:27)

 
 Top
esterio
Отправлено: 13 Января, 2013 - 11:35:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




1. все запросы обрбляет один файл index.php
2. пропускаются файлы которые существуют и директории
3. все сабдомены должны иметь в качестве documentroot тодну папку
 
 Top
remenikomer
Отправлено: 13 Января, 2013 - 11:39:19
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




esterio пишет:
1. все запросы обрбляет один файл index.php
2. пропускаются файлы которые существуют и директории
3. все сабдомены должны иметь в качестве documentroot тодну папку

я с полу слова не могу понять... я php знаю, не профи, но знаю. А htaccess не знаю. Только вот сейчас стал изучать, т.к. столкнулся с необходимостью.
Субдомены - виртуальные.
Я сделал так:
PHP:
скопировать код в буфер обмена
  1. RewriteCond %{http_host} ^(.+)\.site.ru [nc]
  2. RewriteRule ^(.*)$ http://site.ru$1 [R=302,L]

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


Можно как-нибудь понятнее?

(Отредактировано автором: 13 Января, 2013 - 11:55:23)

 
 Top
esterio
Отправлено: 13 Января, 2013 - 12:01:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




RewriteRule ^(.*)$ http://site[dot]ru$1 [R=302,L]
Неверно, может так
RewriteRule .* http://site[dot]ru [L]
Зачем 302 ответ. Если будет поисковый бот, то ему не нужно знать что у вас там куда перенаправляеться
 
 Top
remenikomer
Отправлено: 13 Января, 2013 - 12:04:46
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




esterio пишет:
RewriteRule ^(.*)$ http://site[dot]ru$1 [R=302,L]
Неверно, может так
RewriteRule .* http://site[dot]ru [L]

это куда, вместо моих строк? А как же раздел статей?

esterio пишет:
Зачем 302 ответ. Если будет поисковый бот, то ему не нужно знать что у вас там куда перенаправляеться

Как раз это для поискового бота. Чтобы убрать дубли со всех городов и сделать их только для основного.
Вообще-то я делаю 301 редирект. Но т.к. у меня непонятный кэш какой-то, то я попробовал 302 редирект (временный).
Сейчас некоторые урл не изменяются даже при смене htaccess. Его меняю, а урл как были старые, так и остаются и не меняются никак. Скинуть чего - не знаю.

(Отредактировано автором: 13 Января, 2013 - 12:08:49)

 
 Top
esterio
Отправлено: 13 Января, 2013 - 12:13:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)





Даа сложно будет обьяснить но спробую


CODE (htaccess):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

Идем по шагам. И так припустим мы запрашиваем страницу example.com/about/us1.
1. ключаем реврайт
2. проверяем есть ли такая папка
3. проверяем есть ли такой файл
4. всю строку запроса(а именно /about/us1) помещяем в GET парпаметр route
В итоге у нас запрос следующий example.com/index.php?route=/about/us1
Ни для браузера ни для бота даный процес не виден. Он твердо уверен что такой файл существует

И так далее в index.php прописиваем
PHP:
скопировать код в буфер обмена
  1. $route = isset($_GET['route']) ? explode('/', trim($_GET['route'], '/')) : array('index');

В итоге переменная $route в нашем случае


А далле можно switch..case перебор делать
PHP:
скопировать код в буфер обмена
  1. switch($route[0])
  2. {
  3.         case 'page':{
  4.                 // DO ANY ACTION
  5.         } break;
  6.  
  7.         default:
  8.                 // SHOW 404
  9. }

(Отредактировано автором: 13 Января, 2013 - 12:15:44)

 
 Top
remenikomer
Отправлено: 13 Января, 2013 - 12:19:47
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




но это не то вроде как.
Мне не нужно править php, да и не могу я его исправить, т.к. он под zend. Мне лишь нужно избавить статьи в разных городах от поисковиков, чтобы не было дублей.
Поэтому нужно сделать 301 редирект. А т.к. php закодирован, значит можно только прописывать в htaccess - работать с тем, что есть.
все преобразования урл из динамики в статику сделаны (ЧПУ). Нужно только добавить исключения для разделов статей на всех субдоменах.
(Добавление)
кэш то у htaccess есть какой-то? Его как-то можно обновлять? А не то один субдомен редиректиться до сих пор, хотя в htaccess давно все правила удалил

(Отредактировано автором: 13 Января, 2013 - 12:21:23)

 
 Top
esterio
Отправлено: 13 Января, 2013 - 17:00:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




remenikomer пишет:
кэш то у htaccess есть какой-то

кажется нету. Все меняется на лету
 
 Top
remenikomer
Отправлено: 13 Января, 2013 - 20:41:10
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Вроде понял в чем проблема. Очищаю все настройки браузера (вообще все, куки, историю и т.п.) и все скидывается. Странно.
 
 Top
remenikomer
Отправлено: 14 Января, 2013 - 12:03:12
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Подскажите как правильно писать нисколько условий RewriteCond для одного правила?
Пишу
PHP:
скопировать код в буфер обмена
  1.  
  2. RewriteCond %{http_host} ^(.+)\.site.ru [AND]
  3. RewriteCond %{REQUEST_URI} ^/news/ [nc]

И сервер выдает ошибку. Если использовать одно из двух условий, то они срабатывают. Параметр [and] ведь вроде так указывается. А не хочет срабатывать. Может чего не так делаю?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB