Проблема с mod_rewrite и относительными путями включенных файлов css, js, image, ... и ссылок - PullRequest
1 голос
/ 28 июня 2011

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

проблема:

У меня есть страница www.mypage.com и контролировать язык, отображаемый с помощью параметра GET -> www.mypage.com / index.php? Target = 1 & lang = ru

Теперь клиент зарегистрировал домен на united-domains ( www.mypage.it ) и хочет, чтобы я отображал итальянскую версию страницы всякий раз, когда домен www .mypage.it запрашивается.

Поставщик united-domains предлагает решение под названием URL-HIDING, которое, по-видимому, в основном передает запрос в структуру URL + папок, которую я предоставляю (например, www.mypage.com / lang / это - в соответствии со спецификациями объединенных доменов это должна быть структура папок, а не файла)

решение до сих пор:

Звонки на домен: www.mypage.it будут сопоставлены с www.mypage.com / lang / it / с помощью опции URL-HIDING.

там .htaccess файл переписывает ЗАПРОСЫ к фактической цели:

RewriteEngine on

## check if query string contains NOT 'lang=' 
## (lang might be changed by user after initial request)
RewriteCond %{QUERY_STRING} !lang=
## redirect to page
RewriteRule ^(.*)$ http://www.mypage.com/index.php?target=1&lang=it

## check if query string contains 'lang='
RewriteCond %{QUERY_STRING} lang=
## Keep the existing query string using the Query String Append flag 
RewriteRule ^(.*)$ http://www.mypage.com/index.php? [QSA]

Проблема конечно: файлы CSS, javascript, image, ... включены с относительным путем

<link href="scripts/style.css" rel="stylesheet" type="text/css">
<script src="scripts/media.js" type="text/javascript">

<img src="images/logo.jpg">
<a href="download/test.pdf">PDF</a>

, поэтому соответствующий запрос scripts / style.css сопоставлен с http://www.mypage.com/lang/it/scripts/style.css

К сожалению, я застрял в механизме URL-HIDING объединенных доменов, и меняя каждый относительный путь, / scripts / media.js не вариант, так как мне пришлось бы немного изменить код.

У кого-нибудь есть решение для этого (я боюсь, что мои знания .htaccess не самые лучшие) Не могу я просто удалить lang / it / из КАЖДОГО запроса и дополнительно проверить, содержит ли QUERY_STRING строку lang = и действительно ли она добавляет ? Lang = it

спасибо всем, кто до сих пор читал - если у кого-то есть предложение, я буду более чем благодарен!

оставайся здоровым, Матиас

1 Ответ

0 голосов
/ 29 июня 2011

Это, кажется, делает свое дело!

в папке: www.mypage.com / языки / он /

Я положил:

RewriteEngine on
##  redirect if just folder is requested
RewriteCond %{REQUEST_URI} ^/lang/it/$
RewriteRule ^(.*)$ http://www.mypage.com/index.php?target=1&lang=it

##  otherwise redirects if file does not exist
RewriteCond  %{DOCUMENT_ROOT}/lang/it/$1  !-f
RewriteRule ^(.*)$ http://www.mypage.com/$1 [QSA]
...