Как переписать от / страницы до/xx/page, с помощью htaccess и апача только?

Как dlamblin прокомментировал, нигде нет около достаточного количества детали в Вашем вопросе. По крайней мере необходимо дать нам спецификации для каждого сервера. Для всего мы знаем, что каждый - супер компьютер, и другой 486.

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

0
задан 9 December 2010 в 00:58
2 ответа

Это действительно работает (протестированное):

RewriteCond %{REQUEST_URI} !^/../ [NC]
RewriteRule ^(.*)$ /en$1 [R=301,L]

Apache документация Mod_Rewrite, Перепишите Руководство, и Усовершенствованный Переписывают Руководство.

Править:
Протестированное вышеупомянутое (это совпадает с ним, было прежде); работы над моим сервером Apache 2.2.

Редактирование 2:
Не должна быть без проблем, просто нуждаться в чем-то вроде этого:

# If just the language is specified (ie example.com/en)
RewriteCond %{REQUEST_URI} ^/..$ [NC]
RewriteRule ^(.*)$ $1/

# If no language subfolder, default to 'en'
RewriteCond %{REQUEST_URI} !^/../ [NC]
RewriteRule ^(.*)$ /en$1 [R=301]

# If no page specified, default to home.
RewriteCond %{REQUEST_URI} !^/../.+ [NC]
RewriteRule ^/(..) /$1/home.html [R=301]

# If no ln query, tack it on
RewriteCond %{QUERY_STRING} !ln= [NC]
RewriteRule ^/(..)/(.*) /$1/$2?ln=$1 [R=301]

Примечание: Будьте осторожны, Ваши 404 страницы работают правильно. Если это не сделает недопустимых ссылок, то закончится в бесконечном цикле (т.е., работа привычки на 404 страницы).
Примечание 2: Если пользователь вводит example.com/en, они будут перенаправлены к example.com/en/en?ln=en, так убедитесь, что наклонная черта конца находится в URL, или иначе.
Примечание 3: Если Вы хотите, можно отбросить [R=301] от последнего правила затем будут видеть пользователи example.com/en/home.html запрос к странице на самом деле будет example.com/en/home.html?ln=en. Это не будет работать, если Ваше использование сайта ПОЛУЧИТ запросы все же.

Редактирование 3:
Добавленный другая cond/rule пара, чтобы поймать, если кто-то вводит просто язык без запаздывающей наклонной черты.

4
ответ дан 4 December 2019 в 11:36
  • 1
    @Sam, просто проверил его, это работает как ожидалось. Какая ошибка? Уверенный Вы получили фигурные скобки, заключаете в скобки и заключаете в фигурные скобки корректный? –  Chris S 6 December 2010 в 20:56
  • 2
    Возможно, что Ваш сервер Apache интерпретирует что-то немного отличающееся; попытайтесь заменить /en$1 в правиле с /en/$1. Есть ли в .htaccess файле какие-либо другие правила? –  Chris S 6 December 2010 в 22:00
  • 3
    Какую версию Apache Вы выполняете? Если Вы вручную вводите в/en/somepage.php, он обнаруживается правильно? –  Chris S 6 December 2010 в 22:47
  • 4
    @Sam, первое и последнее правило собирается запустить мини-войну. Первое правило берет что-нибудь в форме/xx/asdf и делает ее/asdf? ln=xx, последнее возьмет это и сделает его/xx/asdf? ln=xx, который инициирует первый снова, вызывая цикл. –  Chris S 7 December 2010 в 06:20
  • 5
    @Sam, это, вероятно, быть самым легким просто отредактировать другие правила в этот вопрос и включать точно, как Вы хотите, чтобы запросы были обработаны. –  Chris S 7 December 2010 в 18:24

Вот код, который я использую. Он принимает любые языки и страну.

# Tout pays de 2 digits et langue de 2 ou 3 digits ou juste la langue pas de pays - fonctionne bien et passe language et country
#www.country.com/index.html  devient www.country.com/index.php
#www.country.com/fr/index.html  devient www.country.com/index.php?language=fr
#www.country.com/ca/fr/index.html  devient www.country.com/index.php?country=ca&language=fr
RewriteRule ^([a-zA-Z]{2})/([a-zA-Z]{2,3})/index\.html$ index.html?country=$1&language=$2
RewriteRule ^([a-zA-Z]{2,3})/index\.html$ index.html?language=$1
RewriteRule ^index\.html$ /index.php [L]
1
ответ дан 4 December 2019 в 11:36

Теги

Похожие вопросы