Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Проблема переноса сайта на том же хостинге |
Автор: anjo 23.2.2011, 12:23 |
Ситуация такова, меня попросили решить одну проблему, но я не могу понять в чём дело. Был осуществлён перенос сайта на том же хостинге, тоесть хостинг не менялся, сайт скопирован (PHP), MySql база вроде импортирована корректно. Перенос делал не я, а тот кто делал пропал с концами. Проблема - при нажатии на ссылки меняется релативный адрес, но не происходит замены контента, хотя первая страница то загружается и коннект с базой происходит. Может кто знает, где собака зарыта? вот сам сайт http://scomfort.lv |
Автор: Wolf1994 23.2.2011, 13:06 |
Посмотрите в сторону .htaccess. Если правила рерайта адресов были прописаны прямо в конфиге Apache, вполне вероятно, что они не были перенесены на новое место - поэтому ссылки не обрабатываются корректно. |
Автор: anjo 23.2.2011, 20:57 |
вот собственно содержимое файла .htaccess <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) /index.php/$1 [L] </IfModule> К сожалению знания этого файла минимальны, но как ме кажется всё есть. Или тут как то в ручную нужно прописывать каждый релативный линк? И,к сожалению, всё, что было на предыдущем уже не посмотреть. |
Автор: Wolf1994 24.2.2011, 07:24 |
Это правило обрабатывает слова в URL. Можно в index.php добавить print_r ($_GET), чтобы убедиться, что передача параметров работает, как надо - если так, значит дело не в параметрах, а в их обработчике. Добавлено через 4 минуты и 10 секунд ...или print_r ($_SERVER) - точно не знаю. |
Автор: anjo 25.2.2011, 00:19 | ||
Да, print_r ($_GET); показал, что проблема в обработчике. Выдаёт: Array ( [0] => main) Вот код php, из index.php
похоже был дописан этот кусок if(!isset($_GET[0])) { $_GET[0] = 'main'; } , если менять 'main', на другие, то контент меняется, $_GET[1] за $_GET[0] выдаёт подкаталог. Похоже придётся все прописать вручную, не подскажете как? что то с switch-case у меня не получается, видимо опыта маловато. |
Автор: Wolf1994 25.2.2011, 07:49 |
У Вас в .htaccess правило немного изменено. Оно передаёт не в $_GET, а в $_SERVER. Посмотрите $_SERVER ['REQUEST_URI'], кажется. Попробуйте присвоить его значение в $_GET [0]. Добавлено через 2 минуты и 1 секунду Если значений несколько, разбейте их: $_GET=explode ("/", trim ($_SERVER ['REQUEST_URI'], '/')); |
Автор: anjo 25.2.2011, 19:26 |
Огромное спасибо. $_GET=explode ("/", trim ($_SERVER ['REQUEST_URI'], '/')); практически решил задачу. +1, как только наберу 100 постов ![]() |