Как dlamblin прокомментировал, нигде нет около достаточного количества детали в Вашем вопросе. По крайней мере необходимо дать нам спецификации для каждого сервера. Для всего мы знаем, что каждый - супер компьютер, и другой 486.
Однако я действительно сомневаюсь, что существует что-либо, что можно сделать о производительности сервера, таким образом сконцентрировать на программном обеспечении вместо этого. Или переместитесь в лучший сервер, потому что время ping указывает на скорость сети, не скорость сервера.
Это действительно работает (протестированное):
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 пара, чтобы поймать, если кто-то вводит просто язык без запаздывающей наклонной черты.
Вот код, который я использую. Он принимает любые языки и страну.
# 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]
/en$1
в правиле с/en/$1
. Есть ли в .htaccess файле какие-либо другие правила? – Chris S 6 December 2010 в 22:00