2015-02-19 3 views
1

У меня есть веб-сайт, который должен быть многоязычным. В корневой папке у меня есть файл .htaccess, который выглядит следующим образом:Как получить доступ к родительским папкам после перенаправления .htaccess?

RewriteEngine on 

RewriteCond %{HTTP:Accept-Language} (cs) [NC] 
RewriteRule .* cs/index.php [L] 

RewriteCond %{HTTP:Accept-Language} (de) [NC] 
RewriteRule .* de/index.php [L] 

У меня также есть index.php в корневой папке на языке по умолчанию (английский). Если клиент приходит на сайт, мне нужно перенаправить его в соответствующий языковой файл. Файлы находятся в подпапках, как вы можете видеть в файле htaccess. (/ cs,/de). Причина, по которой у меня есть эти файлы в подпапке, заключается в том, что у клиентов есть мнение, чтобы самим изменить язык. На веб-сайте есть флажки, которые перенаправляют их в соответствующую папку вручную. До сих пор все работало нормально, но есть огромная проблема. После автоматического перенаправления веб-сайт не может получить доступ к корневым подпапкам с css и js-файлами. Он ведет себя так же, как файл cs/index.php находится в корне. Я обращаюсь к файлам через относительные ссылки, такие как ../css/, потому что папки с этими файлами находятся в корневом каталоге.

Итак, наконец, мой ответ. Что я должен изменить, чтобы заставить его работать надлежащим образом? Спасибо за каждую идею.

ответ

0

Изменение выше правила к этому:

RewriteEngine on 

RewriteCond %{HTTP:Accept-Language} (cs|de) [NC] 
RewriteRule !\.(?:jpe?g|gif|bmp|png|tiff|css|js)$ %1/index.php [L,NC] 

Это будет переписывать все запросы, кроме .css, .js & various images types к вложенным папкам.

Также добавьте это в раздел <head> HTML-страницы вашей страницы: <base href="/" />, чтобы каждый относительный URL-адрес был удален с этого URL-адреса, а не URL-адрес текущей страницы.

Смежные вопросы