HTaccess удалить строку запроса в начале URL - PullRequest
0 голосов
/ 02 апреля 2011

Я использую систему перевода, которая в настоящее время не работает для не дружественных URL-адресов, таких как

/index.php&option=com_virtuemart&page=shop.browse&category_id=&product_type_id=1&product_type_1_Height_comp=find_in_set_any&product_type_1_Height[0]=Short+%28up+to+80cm%29&product_type_1_Strain_comp=find_in_set_any&product_type_1_Strain[0]=Asia-Central&product_type_1_Yield_comp=find_in_set_any&product_type_1_Yield[0]=High

Итак, я добавил:

RedirectMatch 301 /es/(.*)index.php(.*)$ http://www.seed-city.com/$1

... в мой .htaccess файл для перенаправления на английскую версию.Тем не менее, он добавляет ?lang=es&url= в начало URL после перенаправления на английскую версию, и я хотел бы иметь возможность удалить его.Это также может быть ?lang=fr&url= ?lang=de&url= ?lang=zh-CN&url= и т. Д.

Я пробовал столько, сколько мог, но не смог удалить его успешно.Спасибо за ваше время, и любая помощь будет принята с благодарностью.Спасибо, Натастна2.

РЕДАКТИРОВАТЬ:

@ vbence Спасибо за ваш ответ.Я хотел бы взять этот URL:

http://www.seed-city.com/?lang=es&url=index.php&option=com_virtuemart&page=shop.browse&category_id=&product_type_id=1&product_type_1_seed_type_comp=find_in_set_any&product_type_1_seed_type[0]=Regular&product_type_1_indoor_flowering_time_comp=find_in_set_any&product_type_1_indoor_flowering_time[0]=Medium+%2856+to+90+days%29&product_type_1_Outdoor_harvest_time_comp=find_in_set_any&product_type_1_Outdoor_harvest_time[0]=Middle+of+September

и изменить его на:

http://www.seed-city.com/index.php&option=com_virtuemart&page=shop.browse&category_id=&product_type_id=1&product_type_1_seed_type_comp=find_in_set_any&product_type_1_seed_type[0]=Regular&product_type_1_indoor_flowering_time_comp=find_in_set_any&product_type_1_indoor_flowering_time[0]=Medium+%2856+to+90+days%29&product_type_1_Outdoor_harvest_time_comp=find_in_set_any&product_type_1_Outdoor_harvest_time[0]=Middle+of+September

, удалив ?lang=es&url= с начала.Это потому, что теперь, если кто-то нажимает кнопку перевода на испанский язык один раз, он перенаправляется на английскую версию в порядке, так как она соответствует моему предыдущему правилу:

RedirectMatch 301 /es/(.*)index.php(.*)$ http://www.seed-city.com/$1

Однако, если они щелкают по нему один раз, URL-адрес теперь запускаетсяс? lang = es & url = и, следовательно, не совпадает с моим предыдущим правилом.При втором щелчке на флаге перевода они переходят на страницу с ошибкой, а не на английскую версию, которую я бы предпочел.Вот почему я пытаюсь удалить запрос в начале URL.Полученный URL не должен содержать языковых идентификаторов, как на английском языке по умолчанию.Спасибо за ваш ответ.

1 Ответ

0 голосов
/ 02 апреля 2011

Если вы хотите скрыть lang=foo и смоделировать каталог, например /foo/index.php, вы можете использовать это правило вместо:

RewriteRule ^([a-z-]+)/index.php index.php?lang=$1 [QSA,L]

Обратите внимание, что я предположил, что вы используете это правило в файле .htaccess. В конфигурации Apache URL будет начинаться с /, поэтому вы должны добавить его сразу после символа ^ .

...