Не работает при включённом UrlManager [РЕШЕНО]

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
xtsidx
Сообщения: 12
Зарегистрирован: 2011.05.06, 11:25
Откуда: Сочи
Контактная информация:

Не работает при включённом UrlManager [РЕШЕНО]

Сообщение xtsidx »

Дела такие:
1. Apache [+mod_rewrite], Ubuntu, PHP 5, Yii 1.1.8
2. в Apache добавлен новый сайт расположенный в /var/www/mysite
3. в /etc/hosts добавленно -> "127.0.1.1 mysite" и теперь сайт доступен не только по http://localhost/mysite/ но и http://mysite/
4. сделал доступ из вне по dyndns http://blabla.dyndns.org/mysite/

при вЫключенном urlManager работает по всем трём адресам: Проблема проявляется при включенном urlManager, а именно работает только главная страница,
по ссылкам на контролёры выдаёт 404 (апачевскую страницу), а вот статика работает отлично.
например:
// в urlManager: '<view>'=>'site/page'

http://localhost/mysite/
http://localhost/mysite/about

http://mysite/
http://mysite/about // а вот так работает
http://mysite/images/icon-16px.png

// из вне
http://blabla.dyndns.org/mysite/
http://blabla.dyndns.org/mysite/about
http://blabla.dyndns.org/images/icon-16px.png

Как я догадываюсь нужно ковырять .htaccess, а именно правило перенаправления на index.php
сейчас там так:

Код: Выделить всё

# Various rewrite rules.
<IfModule mod_rewrite.c>
	RewriteEngine on

	# if a directory or a file exists, use it directly
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d

	# otherwise forward it to index.php
	RewriteRule . index.php
</IfModule> 
Кто нибудь сталкивался с таким? Что нужно сделать, в какую строну копать?
Последний раз редактировалось xtsidx 2011.06.27, 20:27, всего редактировалось 1 раз.
Аватара пользователя
greatdane
Сообщения: 408
Зарегистрирован: 2010.10.20, 14:05
Откуда: Электросталь
Контактная информация:

Re: Сайт в отдельной папке не работает при включённом UrlMan

Сообщение greatdane »

Прописать RewriteBase. У меня вот так:

Код: Выделить всё

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
RewriteBase /rus/

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php
Вместо rus подставьте название вашей папки, в которой сайт.
Аватара пользователя
xtsidx
Сообщения: 12
Зарегистрирован: 2011.05.06, 11:25
Откуда: Сочи
Контактная информация:

Re: Сайт в отдельной папке не работает при включённом UrlMan

Сообщение xtsidx »

Такое уже пробывал, не помогло.

Код выполненный на главной странице:

Код: Выделить всё

Yii::app()->request->getBaseUrl(false) 
возвращает /mysite
насколько я знаю, должна возвращаться вовсе пустая строка

Например по этой же причине на таким же образом расположенным сайтом Drupal (в другой папке) не работают чистые ссылки.
Я переместил сайт на друпал в корневую папку /var/www и теперь например по ссылке /var/www/mysite/about запускается друпаловский обработчик ошибки, тоесть выводится сайт на друпал с ошибкой 404.

вообщем я думаю показателем, что цель достигнута будет возвращённая пустая строка при исполнении на главной следующего кода:

Код: Выделить всё

Yii::app()->request->getBaseUrl(false) 
Аватара пользователя
xtsidx
Сообщения: 12
Зарегистрирован: 2011.05.06, 11:25
Откуда: Сочи
Контактная информация:

Re: Сайт в отдельной папке не работает при включённом UrlMan

Сообщение xtsidx »

Метод тыка помог, даже не знаю что именно я поменял, но всё заработало как надо.

Ковырял только файлы .htaccess и файл настроек виртуального хоста для Апача.

код

Код: Выделить всё

/arprisoners
так и выводит '/mysite', значит я ошибался.

Оставлю здесь, может кому поможет в будущем:

Код: Выделить всё

<VirtualHost 127.0.1.1>
	ServerName mysite
	ServerAlias mysite
	ServerAdmin webmaster@localhost
	
	CustomLog /var/www/mysite/access.log combined
	ErrorLog /var/www/mysite/error.log

	DocumentRoot /var/www/mysite
	<Directory />
		Options FollowSymLinks
		AllowOverride All
	</Directory>
	<Directory /var/www/mysite/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
и .htaccess

Код: Выделить всё

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php
и такая строчка в /etc/hosts

Код: Выделить всё

127.0.1.1 mysite
извиняюсь за лишнее беспокойство, жаль что так и не понял что именно решило проблему.
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Не работает при включённом UrlManager [РЕШЕНО]

Сообщение Dominus »

Включаем mod_rewrite:
sudo a2enmod rewrite

Меняем в файле настроек виртуального хоста:

Код: Выделить всё

AllowOverride None
на

Код: Выделить всё

AllowOverride All
Перезапускаем сервер:
sudo service apache2 restart
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Ответить