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]   

> Без описания
Tmin10
Отправлено: 01 Января, 2013 - 19:43:50
Post Id



Частый гость


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


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




Подскажите, что прописать в .htccess, чтобы по адресу /news была показана страница из news.html, а запрос по адресу news.html был бы перекинут на /news и там показана страница news.html.
Также, чтобы по запросу index.html и index перекидывало на корень сайта.

Пытался сделать это так, но ни к чему хорошему это не привело кроме циклических перенаправлений...
PHP:
скопировать код в буфер обмена
  1. RedirectMatch 301 (.*)\.html$ $1
  2.  
  3. RewriteEngine on
  4. RewriteRule ([a-z]+) $1.html [L]
 
 Top
KingStar
Отправлено: 01 Января, 2013 - 21:38:07
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. ^([a-z]+)[/]?$ $1.php [L]


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Muxa
Отправлено: 02 Января, 2013 - 00:11:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


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




как то так по идее..
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteRule ^index(\.p?html?)?$ / [R=301,L]
  3. RewriteRule ^([A-z]+)\.p?html?$ /$1/ [R=301,L]
  4. RewriteRule ^([A-z]+)/?$ $1.html [L]

(Отредактировано автором: 02 Января, 2013 - 00:12:03)

 
 Top
Tmin10
Отправлено: 02 Января, 2013 - 14:31:03
Post Id



Частый гость


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


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




Так, немного доработал, вот почти правильный вариант:
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteRule ^index(\.p?html?)?$ / [R=301,L]
  3. RewriteRule ^([A-z]+)\.html$ /$1 [R=301,L]
  4. RewriteRule ^([A-z]+)$ $1.html [L]

Единственное, при запросе /news хочет показать /news.html, что в свою очередь перенаправляется на /news и получается циклические переадресации и [L] почему то не спасает...
В крайнем случае конечно можно написать скрипт, но это лишняя нагрузка на его интерпретацию и выполнение...
 
 Top
Muxa
Отправлено: 02 Января, 2013 - 14:37:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


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




Цитата:
при запросе /news хочет показать /news.html, что в свою очередь перенаправляется на /news

да не должно бы вообще. Может, у вас в скрипте стоит переадресация?
 
 Top
Tmin10
Отправлено: 02 Января, 2013 - 15:37:31
Post Id



Частый гость


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


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




Muxa пишет:
да не должно бы вообще. Может, у вас в скрипте стоит переадресация?

Это просто html странички, никакой динамики, насчёт возможных переадресаций это моё мнение, хром просто выдаёт ошибки про кучу редириктов, в консоли отладки видно, что при запросе /news идёт 301 редирикт на /news и так до бесконечности...
Почему то активируется правило перенаправления для адреса news.html... Я считаю это как раз из-за того, что /news берёт содержимое из news.html...

Кстати, а что значит \.p? и зачем оно надо? первые 2 символа это экранированная точка, последний любой символ, а что значит p?

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

 
 Top
Muxa
Отправлено: 02 Января, 2013 - 15:57:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


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




Цитата:
а что значит \.p? и зачем оно надо?

чтобы при заходе по site.ru/index, site.ru/index.htm, site.ru/index.html, site.ru/index.phtm, site.ru/index.phtml был редирект. Значит что она может быть, а может и не быть.
щас проверю, посмотрю..
(Добавление)
я понял в чем дело, жадный типо.. ща
(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2.  
  3. RewriteRule ^index(\.p?html?)?$ / [R=301,L]
  4.  
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6. RewriteCond %{REQUEST_FILENAME} !-f
  7.  
  8. RewriteRule ^([A-z]+)/?$ $1.html [L]

(Добавление)
хотя странно вообще Улыбка
 
 Top
Tmin10
Отправлено: 02 Января, 2013 - 16:14:50
Post Id



Частый гость


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


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




Теперь прекрасно работает, спасибо!
 
 Top
Muxa
Отправлено: 02 Января, 2013 - 16:19:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


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




Я бы так не сказал. Почему то, с существующего файла не хочет делать редирект, даже если заменять условие на существующий файл.. может кто поумнее объяснит..
 
 Top
Tmin10
Отправлено: 02 Января, 2013 - 16:59:56
Post Id



Частый гость


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


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




Да всё нормально, если news не файл и не католог, то ищем и показываем news.html, всё прекрасно работает!
 
 Top
Muxa
Отправлено: 02 Января, 2013 - 17:15:41
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


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




Tmin10, я не про это. я знаю что значат эти директивы.. Мне интересно, почему наоборот, если не ставить отрицание -
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteCond %{REQUEST_FILENAME} -d
  2. RewriteCond %{REQUEST_FILENAME} -f

то регулярки не выполняются - т.е. если этот файл существует, получается нельзя сделать редирект кроме как проверять в самом скрипте? Однако
 
 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