.htaccess действовать только по конкретным ссылкам - PullRequest
0 голосов
/ 27 января 2012

Итак, мне нужно переписать небольшой веб-сайт только для HTML, чтобы он мог работать на нескольких языках. Я также хочу сохранить существующие ссылки в рабочем состоянии, чтобы не повредить рейтинг, а также оригинальный макет папки.

Я имею в виду, что у меня будет язык по умолчанию - лв. Тогда у меня должен быть RewriteRule, который работает только с ссылками .html, и только, если между первым и вторым слешем есть (lv|en|ru), что-то вроде этого:

http://example.com/lv/index.html

Он должен быть перенаправлен в index.php, который затем выведет часть языка, если она отсутствует, она проверит значение по умолчанию в сеансе, а если это отсутствует - используйте default.

То, что я смог придумать, это:

RewriteRule ([a-zA-Z]*)\.html $1.php

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

Помощь

1 Ответ

0 голосов
/ 27 января 2012

Если я вас правильно понимаю, то вы переусердствуете в этом.Вам не нужно вводить скрипт PHP.Вы говорите, что у вас есть три языковых варианта для файлов HTML, но другие расширения являются общими для всех трех языков.Итак, давайте попробуем еще раз.Я предполагаю, что lv HTML находится в иерархии DOCUMENT_ROOT, но у вас будут зеркальные иерархии для английского и русского языков, поэтому:

RewriteEngine On
RewriteBase   /

# If the request is for a language subdirectory: 
#  anything other than HTML or
#  the request is for the default lv
# then remove the language subdir

RewriteCond %{REQUEST_URI}    !\.html\b
RewriteCond $1                =lv
RewriteRule ^(lv|en|ru)/(.*)  $2         [L]
...