LINUX.ORG.RU

Скрипт новостей cutenews

 


0

1

Доброго времени суток! В PHP я новичок, так пока для себя изучаю. Сейчас пишу сайт и столкнулся с проблемой, что сайт без новостей какой-то «не живой», поэтому нашел интересный скрипт cutenews, по началу все работало, когда сайт был на html, у меня есть готовые шаблоны от других сайтов, поэтому решил сразу в один из старых сайтов просто поменять наполнение, все вроде бы хорошо и новости отображаются, не работают переход на страницу с комментариями, а по началу вообще не мог зайти в админку cutenews, позже понял, что дело в htaccess, в нем я вообще не разбираюсь пока. Добавил строчку

RewriteRule ^cutenews/(.*)$ cutenews/$1 [L]
Вроде запустилось, все настроил, добавил для проверки несколько новостей, все отображается, но есть одно но не переходит на страницу с более детальным отображением, вернее переходит и белая страница, подскажите в чем проблема или куда хотя бы копать, код ниже.

htaccess

RewriteEngine on
RewriteBase /
Options All -Indexes
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^cutenews/(.*)$ cutenews/$1 [NC,L]
RewriteRule ^.*$ [NC,L]
RewriteRule ^.*$ index.php [NC,L]
AddDefaultCharset utf-8
AddType 'text/html; charset=utf-8' .html .htm .shtml

main.php

<div id="container">
		<h1>Заголовок сайта</h1>

		<div id="menu">Меню
		
		</div>
		<div id="content">
			<h2 align="center">Последние новости</h2>
				<?php
				include("cutenews/show_archives.php");
				?>
		</div>
		<div id="menu-2">
			<table id="calendar2">
			  <thead>
				<tr><td>‹<td colspan="5"><td>›
				<tr><td>Пн<td>Вт<td>Ср<td>Чт<td>Пт<td>Сб<td>Вс
			  <tbody>
			</table>
		</div>
	<div id="footer">футер

	</div>
</div>

Ссылку на которую направляет и там белая страница

http://localhost/index.php?archive=1485454702

Поставил все с нуля, там все работает

http://test/index.php?archive=1485456970 - отображает последние новости
http://test/index.php?archive=1485456970&id=2 - добавление комментариев

Папка cutenews находиться в корне сайта. Если что еще надо скинуть говорите, уже прочитал информацию о RewriteRule, попробовал добавить строку, ну чего-то ни чего не помогает..

Кажется нашел в чем проблема, если в index.php строчку поменять

....
if($Page == "index"){$includePath = "pages/main-page.php";include('pages/main-template.php');}
....
на
...
if($Page == "index.php"){$includePath = "pages/main-page.php";include('pages/main-template.php');}
...
То все работает, но про переходе на localhost белая страница, то есть в первом случае белая страница при переходе на новость, а во втором при переходе на localhost/index.php новости работают, но не работает главная.

AnonimS
() автор топика

RewriteRule ^.*$ [NC,L]

Что это? Оно не должно работать. Удали эту строчку. Синтаксис у RewriteRule:

RewriteRule Pattern Substitution [flags]

Белая страница - это вполне может быть ошика при выполнении php, если отключены сообщения об ошибках. Читай логи веб-сервера.

Что это вообще за код в комментарии? В топике его нет.

Можешь тогда уж добавить

if($Page == "index.php" || $Page == "index"){$includePath = "pages/main-page.php";include('pages/main-template.php');}

p.s. $%^&* какое-то.

Tanger ★★★★★
()
Ответ на: комментарий от AnonimS

добавил || и все заработало.

Поздравляю! В твоём коде стало на один отвратительный костыль больше. ;)

Tanger ★★★★★
()

А можешь объяснить зачем тебе вообще такой rewrite нужен? И что по-твоему он делает?

Tanger ★★★★★
()
Ответ на: комментарий от Tanger

Причем, который не правильно работает, вернее работает, но не так как нужно. Смысл в чем? к примеру запрос такой

index.php?archive=1485454702
А надо его перенаправить на такой
index?archive=1485454702
Исходя из маршрутизации сайта, если я делаю так, то он работает, но не корректно
if($Page == "index.php" || $Page == "index")
Вопрос почему? Сutenews берет страницу, на который находиться и добавляет параметры, как именно это работает я не могу сказать, еще не смотрел, но мне кажется проще через rewrite сделать переадресацию..

AnonimS
() автор топика
Ответ на: комментарий от AnonimS

Полагаю что ты хочешь наоборот. По запросу `index?...` выполнять php-скрипт `index.php`.

В таком случае нужна строчка:

RewriteRule ^(.*)$ $1.php [L]

И обращаться по url test.org/index?blablabla

Tanger ★★★★★
()
Ответ на: комментарий от Tanger

Логику RewriteRule в вкратце я понял , ну возникла другая проблема. Почему-то стили начинают отваливаться, мне кажется я где-то ошибся, я написал отдельный скрипт для отображения контекста. Если кратко рассказывать, то схема следующая. Блок меню, там 4 пункта меню, к каждому пункту подвязано событие js(функция с параметром, взятым из кнопки), который post'ом через ajax отправляет на content.php, а там через swich уже возвращает что отображать. Проще способа для динамического отображения контента не нашел, ну этот вроде работает, но есть одно но..Я использую новостной скрипт cutenews, собственно о чем и тема, все вроде бы работает, ну для написания комментария надо перезагрузить страницу с параметрами и тут начинаются косяки, комментарии должны отобразиться в том же блоке #content, ну вот не задача при перезагрузке получается перенаправление assets/php/content.php?id=3 и отображается белая страница, потому что в content.php написано только swich и все.

Я нашел решение этой проблемы, ну работает оно не так как надо. Задача состоит сейчас в том, чтобы при запросе

http://localhost/assets/php/content.php?id=3
Подменялся на
http://localhost/index.php?id=3
В этом случае все работает. Добавил следующую строку
RewriteRule ^assets/php/content.php?id=(.*)$ index.php$1 [L]
Ну это работает не так как надо, она перенаправляет и запросы assets/php/content.php на index.php, а мне надо, чтобы перенаправлялись запросы только с параметрами. В итоге сейчас запросы перенаправляются, но дело в том, что при нажатии на кнопку меню, то в блоке #content появляется вся страница, а должен быть тот контект, который выдает js. В общем пока не нашел решения, может кто подскажет..

AnonimS
() автор топика
Ответ на: комментарий от AnonimS

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

К сожалению mod_rewrite настолько гибок, что это можно сделать: http://xandeadx.ru/blog/raznoe/91

В общем пока не нашел решения, может кто подскажет..

Подсказка: то, что ты делаешь - лютый говнокод. Лучше удалить и сделать заново.

Tanger ★★★★★
()
Ответ на: комментарий от Tanger

Я уже понял, что костыл на костыле получается, думаю заново написать, со знаниями, которые уже есть это проще)

AnonimS
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.