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

Я помню, что redirectmatch не может обрабатывать вопросительные знаки, но как я могу сопоставить этот URL:

http://www.mysite.com/es/?lang=es&url=index.php&option=com_virtuemart&page=shop.browse&category_id=42&product_type_id=1&product_type_1etcetcetc`

, чтобы удалить lang=es&url= перед index.php, когда присутствует имя папки?

Моя проблема была бы решена, если бы я мог либо удалить папку / es / из URL-адреса при представлении строки запроса ?lang=es&url=, либо удалить строку запроса ?lang=es&url= из URL-адреса, когда папка / es /

Существует около 11 языков с кодами стран fr, de и т. Д. И одним нечетным из zh-CN. Это только что вышло из-под контроля. Спасибо, что нашли время, чтобы прочитать это, и любая помощь будет принята с благодарностью.

РЕДАКТИРОВАТЬ: в основном работает сейчас. У меня просто небольшая проблема с языком zh-CN, так как он, кажется, действует не так, как другие языки en, fr, de и т. Д., Которые делают то, что я хочу, оставаясь на английском даже при двойном щелчке на другом языке. Однако язык zh-CN перенаправляет на домашнюю страницу с http://www.seed -city.com /? Lang = zh-CN & url = index.php & zh-CN

У меня сейчас есть это в моем файле htaccess:

RewriteEngine On<br> RewriteCond %{REQUEST_URI} ^/../<br> RewriteCond %{QUERY_STRING} lang=..&url=index.php&(.*)<br> RewriteRule ^(.*)$ /$1index.php?%1 [R=301,L]<br> RewriteCond %{REQUEST_URI} ^/(zh-CN|zh-TW)/ [NC]<br> RewriteCond %{QUERY_STRING} lang=([a-z]{2}|zh-CN|zh-TW)&url=index.php&(.*) [NC]<br> RewriteRule ^(.*)$ /$1index.php?%1 [R=301,L]

У меня намного больше после, но это важная часть. Спасибо за ваше время. Natastna2.

1 Ответ

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

Если я правильно понял ваше требование, это сработает в вашем файле .htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/es/
RewriteCond %{QUERY_STRING} lang=es&url=index.php&(.*)
RewriteRule ^(.*)$ /$1index.php?%1 [R=301,L]

Используя вышеупомянутую роль URL-адрес, подобный этому: http://www.mysite.com/es/?lang=es&url=index.php&option=com_virtuemart&page=shop.browse&category_id=42&product_type_id=1&product_type_1etc

будет перенаправлен на: http://www.mysite.com/es/index.php?option=com_virtuemart&page=shop.browse&category_id=42&product_type_id=1&product_type_1etc

EDIT

В соответствии с вашим отредактированным разделом здесь приведены правила перезаписи, которые должны работать на данный момент:

RewriteCond %{REQUEST_URI} ^/../
RewriteCond %{QUERY_STRING} lang=..&url=index.php&(.*)
RewriteRule ^(.*)$ /$1index.php?%1 [R=301,L]

RewriteCond %{REQUEST_URI} ^/(zh-CN|zh-TW)/
RewriteCond %{QUERY_STRING} lang=(zh-CN|zh-TW)&url=index.php&(.*)
RewriteRule ^(.*)$ /$1index.php?%2 [R=301,L]
...