Не распознает мои css, js и т. Д. - PullRequest
0 голосов
/ 08 октября 2010

У меня есть .htacces вроде:

RewriteEngine On
RewriteRule ^en/$             index.php?page=index&lang_id=2
RewriteRule ^contact.html$    index.php?page=contact
RewriteRule ^en/contact.html$ index.php?page=contact&lang_id=2
# ...[and so on]

На моем сайте у меня есть кнопка переключения языка (изображение). Мой основной язык на Ро, и я хочу перевести его на английский. Итак, дело в том, что на реальном сервере коммутатор работает. На моем локальном сервере wamp, когда я пытаюсь переключить язык, в моем браузере появляется переведенный текст (поскольку они хранятся в моей базе данных), но он не распознает стили CSS, изображения, ... он появляется только текст.

Где проблема? Пожалуйста, помогите мне.

Ответы [ 4 ]

1 голос
/ 08 октября 2010

Используете ли вы абсолютные или относительные URL для ваших внешних ресурсов? Возможно, проблема в том, что предварительно созданная дополнительная папка нарушает ваши относительные URL.

Допустим, вы используете изображение с именем logo.png, оно размещено в папке изображений и обозначено тегом изображения: <img src="images/logo.png" alt="logo" />. Обычно, если вы находитесь на странице contact.html, браузер проверяет местоположение http://localhost/images/logo.png, но с вашей папкой /en браузер проверяет http://localhost/en/logo.png, которого не существует.

Способ исправить это с помощью абсолютных URL, поэтому с помощью

<img src="http://localhost/images/logo.png" alt="logo" />

Должны исправить ваши проблемы.

0 голосов
/ 24 января 2011

У меня была такая же проблема, я только что понял это:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/([style|css|js|javascript|images|img|fonts|swf]+)/(.+)\.([^.]+)$ public/$2/$3.$4 [L]

, пока все файлы находятся в каталоге или подкаталоге: style, css, js, javascript, images, img, fonts или swf, это будет работать

изменить общедоступную папку в корне, $ 2 - это папка css, js ... и т. Д. $ 3 - это остальная часть пути

0 голосов
/ 08 октября 2010

Ваш браузер, вероятно, делает запрос на en / style.css, это перенаправляется по первому правилу на index.php? Page = index & lang_id = 2, другими словами, он никогда не сможет найти css таким образом.

Добавить

RewriteRule (css|jpg|png|gif|js|swf)$ - [L]

сразу после RewriteEngine On.

Это гарантирует, что, если расширение является одним из вышеупомянутых, оно не перенаправляет.

РЕДАКТИРОВАТЬ

хорошо, скажем, что ваша относительная ссылка говорит css / style.css, она автоматически преобразуется в ссылку baseURL +, поскольку baseURL будет http://www.example.com/en/, она будет искать css в папке en /css / style.css вместо css / style.css

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

пример:

RewriteCond ([^/]+css)$ style/$1 [L]
RewriteCond ([^/]+(jpg|png|gif))$ images/$1 [L]
RewriteCond ([^/]+(js))$ javascript/$1 [L]
etc.
0 голосов
/ 08 октября 2010

Возможно, у вас есть какое-то правило типа RewriteRule ^en/(.*)$ index.php?page=$1.

Для отладки используйте расширение HttpFox для Firefox и посмотрите, какой файл возвращается сервером, и если это ответ 200 OK.

...