Мне нужно переместить сайт Zend на общий хостинг, который использует Pretty URL, но css-файлы не загружаются при добавлении параметров. Прежде чем двигаться, я хочу проверить с адресом ip сервера, чтобы быть уверенным.
Например
-SERVER_IP / ~ имя_пользователя / en (работает)
-SERVER_IP / ~ имя_пользователя / en / news (сбой из-за его поиска в папке «en»)
Я хотел бы перенаправить каждый файл css из path / css / в мою настоящую папку css, в которой есть много файлов css.
Я хочу одно и то же для каждого пути / images / и / js / и, возможно, других.
Кто-нибудь может мне помочь ?
Спасибо!
ОБНОВЛЕНИЕ 1
Относится ли относительное изменение пути между domain.com и SERVER_IP / ~ именем пользователя? Когда я устанавливаю /css/style.css, он ищет SERVER_IP / css / style.css вместо SERVER_IP / ~ username / css / style.css. Если я смогу заставить его работать для обоих, мои проблемы исчезнут. Но я не могу тестировать домен, потому что на данный момент у меня его нет.
ОБНОВЛЕНИЕ 2
Я изменил файл моих хостов в C: \ windows \ system32 \ drivers \ etc \, чтобы имитировать реальный домен. Как я ожидаю, относительный путь не работает одинаково.
- SERVER_IP/~username/index.php <img src="/img/world.jpg" /> => SERVER_IP/img/world.jpg (BAD, note i've lose ~username) - www.domain.com/index.php <img src="/img/world.jpg" /> => www.domain.com/img/world.jpg (perfect)
С этим изменением весь мой путь хорош сейчас, и нет необходимости перенаправлять что-либо. Но возникает другая проблема. Поскольку я использую www.domain.com, index.php отображается в URL-адресе, и я не хочу этого: www.domain.com/index.php/en
ОБНОВЛЕНИЕ 3
Я нашел это правило: RewriteRule ^index.php(.*)$ http://%{HTTP_HOST}/$1 [R=301,NC,L]
. index.php теперь удаляется, но когда я нахожусь на www.domain.com/en, похоже, что en не находится в запросе uri, и все мои ссылки переходят на сайт www.domain.com/en/en / …
Я вставляю здесь свой контент .htaccess:
Options +FollowSymLinks Options -Indexes RewriteEngine on RewriteBase / DirectoryIndex index.php index.html RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule .* - [L] RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^index.php(.*)$ http://%{HTTP_HOST}/$1 [R=301,NC,L]
ОБНОВЛЕНИЕ 4
Я понял ! Я опишу все свое решение ниже!
ПОЛНОЕ ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ
Я нашел решение, все работает # 1 сейчас на общем хостинге. Вот мое полное решение, я надеюсь, что это сэкономит много времени кому-то.
1- Завершить Zend Architecture (D = Каталог, F = Файл)
- public_html/ (D) application/ (D) data/ (D) library/ (D) docs/ (D) nbproject/ (D) public/ (F) index.php ... (F) .htaccess
2- Удалите основной файл .htaccess в папке «public /» и поместите его в корневую папку «public_html /» (или ../public)
RewriteEngine On RewriteRule ^\.htaccess$ - [F] RewriteCond %{REQUEST_URI} ="" RewriteRule ^.*$ /public/index.php [NC,L] RewriteCond %{REQUEST_URI} !^/public/.*$ RewriteRule ^(.*)$ /public/$1 RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^.*$ - [NC,L] RewriteRule ^public/.*$ /public/index.php [NC,L]
КОНЕЦ !!! Это все, что вам нужно сделать, ничего больше, никакого сложного или грязного кода! Этот файл .htaccess разрешает проблему с конфигурацией DOCUMENT_ROOT в файле httpd.conf для общего хостинга.
ВАЖНАЯ ЗАМЕТКА
Если ваш домен не перенаправлен в этот момент (или вы хотите протестировать, прежде чем перемещать хост с сервера на другой (мой случай)), и вы хотите получить доступ к своему сайту с таким URL-адресом
http://SERVER_IP/~username/
, это не сработает. Лучшее решение – временно изменить файл хостов в C: \ windows \ system32 \ drivers \ etc \, чтобы добавить строку следующим образом:
SERVER_IP domain.com
Это отлично работает!