Ошибка Codeigniter base_url или переписывание URL?

avatar
user1849661
7 апреля 2018 в 23:37
83
1
1

Заранее спасибо за всю помощь, которую вы мне окажете, ребята. Я сейчас в каком-то отчаянии, не знаю, что делать. Я предполагаю, что проблема связана с моим base_url, но она также может быть связана с моим .htaccess, в котором есть url_rewriting? У меня есть проект воспламенителя кода, который работает на локальном хосте.

Каждый раз, когда я нажимаю на ссылку, она добавляет "localhost:8888":

У меня есть страница со следующим URL: http://localhost:8888/my_project/ И когда я нажимаю на ссылку на этой странице, она указывает мне на: http://localhost:8888/localhost:8888/my_project/procedure/student

Я не понимаю, почему между ними добавляется localhost:8888? (если я вручную уберу в урле localhost:8888, страница работает и грузится корректно)

Вот мой файл констант, определяющий мой base_url:

define("URL", (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] );
define("SITE_URL", 'http://localhost:8888/my_project/');

Вот мой .htaccess :

Options +FollowSymlinks -Indexes
RewriteEngine On
#RewriteBase /

## in case the URL is not an actual FILE
RewriteCond %{REQUEST_FILENAME} !-f

## or an actual directory
RewriteCond %{REQUEST_FILENAME} !-d

## send everything to the index, for MVC
#RewriteRule ^.*$ ./index.php

RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

DirectoryIndex index.php index.html

Вот также моя строка base_url в config.php:

$config['base_url'] = 'http:/localhost:8888/my_project/';

Ссылки генерируются в представлении следующим образом: id);?> поэтому должно быть указано, например, localhost:8888/my_project/teacher/7, но при наведении курсора на ссылку появляется localhost:8888/localhost:8888/my_project /учитель/7

Я делаю что-то не так?

Заранее спасибо за помощь!

Источник
Tpojka
8 апреля 2018 в 01:30
0

Для базового URL также требуется схема (например, http://localhost:8888/my_project/). Обратите внимание на часть http://. Это обязательная часть. Если он не установлен, вы можете получить результат, описывающий вашу проблему. Дважды проверьте значение $config['base_url'] еще раз, а также вы можете прочитать комментарий над этой строкой в ​​файле APPPATH.'config/config.php'.

user1849661
8 апреля 2018 в 19:02
0

Привет, большое спасибо за ответ, приятель. Я только что отредактировал свой пост, чтобы вы могли видеть мой файл config.php, а base_url уже был установлен. Я просто тупо забыл упомянуть об этом. Я просто не понимаю вашего последнего предложения: «а также вы можете прочитать комментарий над этой строкой в ​​APPPATH.'config/config.php». Что вы имели в виду? Что такое АПАТ? Какую строку в каком файле я должен прокомментировать? Заранее спасибо дружище :)

Tpojka
9 апреля 2018 в 11:16
0

APPPATH — константа, указывающая на каталог ROOT.'application/'. Ваше предположение верно, над этой строкой (базовый URL-адрес) в файле конфигурации есть блок комментариев, описывающий, как должен быть установлен базовый URL-адрес. Что касается вашей проблемы здесь, можете ли вы var_dump() связать эту ссылку в контроллере с выходом перед загрузкой представления и проверкой того, какое значение вы там получили? Эта часть контроллера будет оценена здесь, чтобы мы могли лучше понять проблему. Например: это происходит, когда вы используете свои собственные константы или в каком-то другом случае.

user1849661
10 апреля 2018 в 16:29
0

Большое спасибо за ответ, приятель. Хорошо, у меня нет константы APPATH в моем файле consoles.php. И чтобы ответить на ваш вопрос, я предполагаю, что это происходит при использовании моих пользовательских констант, поскольку я сам определил некоторые константы, как вы могли видеть ранее (site_url, url и т. д.). Ссылки не могут быть var_dumped в контроллере, поскольку они генерируются в представлении следующим образом: <a href="<?= base_url("teacher/" . $v->id);?> так что это должно дать, например, localhost :8888/my_project/teacher/7, но когда я навожу ссылку, появляется localhost:8888/localhost:8888/my_project/teacher/7

Tpojka
10 апреля 2018 в 17:38
0

Из нас это может быть var_dumped в контроллере - все, что было в представлении, сначала существовало в контроллере. Я предполагаю, что это будет что-то вроде $v или $data[$v] или что-то подобное. Но эта стрельба вслепую, угадывая код вашего контроллера, очень сложна для меня (вероятно, и для других разработчиков, готовых помочь), и вам нужно будет поставить эту часть контроллера под сомнение, если вы ожидаете здесь помощи.

user1849661
12 апреля 2018 в 12:17
0

Еще раз большое спасибо за ваш ответ, я очень ценю вашу помощь, приятель :) Как я уже сказал, ссылка создается в представлении следующим образом: <a href="<?= base_url("учитель/" . $v->id) ;?> единственное, что существовало в контроллере, это $v->id. Так что же мне делать с var_dump? Ссылка не может быть сброшена с помощью var в контроллере, так как ее нет в контроллере. Если хотите, я могу сбросить var это в представлении?

Tpojka
12 апреля 2018 в 14:21
0

Вы можете var_dump(base_url());exit; и сначала проверить, что подразумевается под этим.

user1849661
12 апреля 2018 в 23:47
0

Большое спасибо, я даже не подумал об этом, я тупой или что... base_url возвращает правильный base_url : string(32) "http:/localhost:8888/my_project/" Таким образом, проблема не исходит от контроллер, но из представления. Я прав ? Потому что base_url отлично работает в контроллере, но, кажется, не работает нормально в представлении...?

Tpojka
13 апреля 2018 в 07:34
0

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

Tpojka
13 апреля 2018 в 08:43
0

Также предполагая, что http://localhost:8888 является корневым сервером, вы можете установить RewriteBase /my_project/ в файле htaccess. Только что заметил, что у вас опечатка в base_url - у вас одна косая черта вместо двух. Я считаю, что это может быть причиной такого глючного поведения.

user1849661
13 апреля 2018 в 11:11
0

Tpojka, ты один из тех гениев, которые мне нравятся, и тебе нужно дать почетную медаль. Большое спасибо. Ты избавил меня от многих проблем, омг. До сих пор не могу поверить, что совершил такую ​​глупую ошибку... Большое спасибо! Хорошего дня. Не могли бы вы опубликовать этот комментарий как ответ, чтобы я мог указать его как правильный ответ? Заранее спасибо.

Ответы (1)

avatar
Tpojka
13 апреля 2018 в 13:37
0

После серии отладок (с помощью комментариев) делается вывод, что ошибка заключалась в неправильно написанном базовом URL-адресе в файле конфигурации. Его следует изменить с:

$config['base_url'] = 'http:/localhost:8888/my_project/';

до

$config['base_url'] = 'http://localhost:8888/my_project/';// notice double slash at beginning

Поэтому мне была предложена Почетная медаль, и я все еще думаю, следует ли мне принять ее за указание на эту глупую ошибку, с которой каждый из нас когда-то сталкивался, или мне следует дождаться какой-то самой большой ошибки где-либо на месте, а затем принять это заслуженное признание . :)