- Проблем с .htaccess
123
WT форуми -> PHP MySQL ASP.NET -> Проблем с .htaccess
Създайте нова тема Напишете отговор 
Автор Съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 119
Bonus: 231
Мнения: 3069
Мнение 08/03/2018 5:14 pm      Отговорете с цитат


teroristd написа:
Ох не знам какво е ама е много дървена работа. Сега тия от хостинга нещо гледат, ама едва ли ще го оправят Sad . Май няма да има pretty url-s.

Странна работа. Още мъдря по темата ама не се сещам някакъв друг начин да презапишеш url-то.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Fakeheal
Support
Support

Регистриран на: 17/04/2010 8:37 am

Support: 350
Bonus: 698
Мнения: 2649
Мнение 08/03/2018 5:32 pm      Отговорете с цитат


deam0n написа:
Намирисва ми на nginx Very Happy За разлика от apache, nginx не работи с htaccess файлове.


Мисля, че icn не предлагат на shared hosting нещо различно от апаче.

А може ли да споделиш рутинга си?
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 08/03/2018 5:36 pm      Отговорете с цитат


Да ето така си взимам урл-а.

PHP code:

public function getUrl()
{
return substr(filter_input(INPUT_SERVER, 'PHP_SELF'), strlen(filter_input(INPUT_SERVER, 'SCRIPT_NAME')) + 1);
}


След това в FrontControler си правя разни проверки и накрая разбивам урл-а и си взимам контролера и т.н.

PHP code:

private function params()
{
$this->_params = explode('/', $this->_URL);

if (!empty($this->_params[0]))
{
$this->_controller = strtolower($this->_params[0]);

$this->isControllerExist();

if (!empty($this->_params[1]))
{
$this->_method = strtolower($this->_params[1]);

$this->isMethodExist();

unset($this->_params[0], $this->_params[1]);
}
else
{
$this->_method = strtolower($this->_defaultParam[1]);
}
}
else
{
$this->_controller = strtolower($this->_defaultParam[0]);

$this->_method = strtolower($this->_defaultParam[1]);
}

$this->_file = $this->_namespace . DIRECTORY_SEPARATOR . ucfirst($this->_controller);

$this->_load = $this->_container->make($this->_file);

$this->_load->{$this->_method}();
[/code]
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 08/03/2018 7:24 pm      Отговорете с цитат


Ето и част от коментара на съпрта, но както се досещате проблема си остава.
Цитат:

Здравейте,
споделения хостинг не работи с mod_php както сте предположили а със cgi вариация, но не е това проблема. При cgi има функция cgi_fixpathinfo, която заобикаля описания от Вас проблем, но тя е настроена от нас коректно на всеки сървър.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 119
Bonus: 231
Мнения: 3069
Мнение 08/03/2018 7:31 pm      Отговорете с цитат


teroristd написа:
Ето и част от коментара на съпрта, но както се досещате проблема си остава.
Цитат:

Здравейте,
споделения хостинг не работи с mod_php както сте предположили а със cgi вариация, но не е това проблема. При cgi има функция cgi_fixpathinfo, която заобикаля описания от Вас проблем, но тя е настроена от нас коректно на всеки сървър.


Пробва ли с прости функциии, които htaccess да стартира? Примерно да не ти дава достъп до някоя папка и да ти иска парола. Ако го прави то проблема е някъде при презаписването на урл-тата, а не като цуло че htaccess не работи.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 08/03/2018 7:39 pm      Отговорете с цитат


Не не съм пробвал други функции. Той самия .htaccess работи но не както се очаква. Според мен е от настройките на сървъра защото на локалхоста си работи. Аз съм склонен да променя нещо по моя код но не знам какво.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 54
Bonus: 108
Мнения: 693
Мнение 08/03/2018 8:18 pm      Отговорете с цитат


Проблема идва именно заради това, което са ти написали. cgi.fixpathinfo. Така или иначе няма да го фикснат за теб, нито ти можеш да го фикснеш на споделен хостинг.
Това, което можеш да направиш е следното:

.htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]


index.php

echo $_SERVER['REQUEST_URI'];


Пример: http://example.com/controller/action, би трябвало да ти върне това в червено.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 08/03/2018 8:39 pm      Отговорете с цитат


Такъв ми е оригиналния .htaccess без питанката. С нея също пробвах но само изчезва съобщението No input file specified. и не ми зарежда нищо.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 54
Bonus: 108
Мнения: 693
Мнение 08/03/2018 8:42 pm      Отговорете с цитат


teroristd написа:
Такъв ми е оригиналния .htaccess без питанката. С нея също пробвах но само изчезва съобщението No input file specified. и не ми зарежда нищо.


Ами нормално, ако продължаваш да използваш


substr(filter_input(INPUT_SERVER, 'PHP_SELF'), strlen(filter_input(INPUT_SERVER, 'SCRIPT_NAME')) + 1);


няма да работи. Връщай $_SERVER['REQUEST_URI'] и го парсвай.

Хубаво е да почнете да четете внимателно коментарите, които ви се дават.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 08/03/2018 8:49 pm      Отговорете с цитат


Сори не съм разбрал че това имаш предвид.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 54
Bonus: 108
Мнения: 693
Мнение 08/03/2018 8:53 pm      Отговорете с цитат


teroristd написа:
Сори не съм разбрал че това имаш предвид.


Понеже fix_pathinfo променя начина на преобразуване на пътищата, се налага да зададеш в правилото, че използваш query_string, именно за това е питанката. От там, PHP_SELF не ти върши работа, понеже ще ти върне index.php и няма какво да парсваш. Затова, понеже имаме query_string отзад, се налага да взимаме REQUEST_URI или QUERY_STRING ключовете на _SERVER променливата.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
teroristd
Редовен
Редовен

Регистриран на: 18/02/2010 1:50 pm

Support: 83
Bonus: 178
Мнения: 1741
Мнение 08/03/2018 8:57 pm      Отговорете с цитат


Благодаря ти. Сега ще се пробвам да си настроя рутирането по този начин.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
123
Страница 2 от 3


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети