Как перенаправить URL с параметрами?

Я в полной растерянности, пытаясь интегрировать mod_rewrite в мою существующую страницу. В настоящее время я создаю новый сайт с нуля, и у меня есть несколько хороших чистых URL-адресов, таких как:

http://www.example.nl/nl/example

На старом сайте с простым управлением Cms есть некоторые непереписанные URL-адреса, которые необходимо перенаправить на новые страницы. Эти URL-адреса выглядят так:

http://www.example.nl/index.php?page=cake-and-pie&hl=nl_NL

Но более короткие версии этого, как:

http://www.example.nl/index.php?page=cake-and-pie

также работать.

Мне потребовалось некоторое время, чтобы понять, что URL-адреса с параметрами нельзя просто перенаправить с помощью «Redirect 301», как я обычно делаю. Поэтому я попробовал несколько онлайн-генераторов mod_rewrite, таких как этот и this, но правила, выводимые ими, приводят только к ошибкам 404 (перенаправление вообще не работает).

Мой текущий файл .htaccess выглядит так:

RewriteEngine On
RewriteBase /

# remove .php;
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]

# remove index
RewriteRule (.*)/index$ $1/ [R=301]

# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

Старые страницы перестанут существовать. Как перенаправить старые страницы на новые?

Спасибо.

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

RewriteCond %{QUERY_STRING} =page=pie
RewriteRule ^index\.php$ /nl/? [L,R=301]
RewriteCond %{QUERY_STRING} =page=pie&hl=nl_NL
RewriteRule ^index\.php$ /nl/? [L,R=301]

Кажется, это помогает. Это, конечно, руководство для каждого URL-адреса, но у меня их всего несколько.


person Lg102    schedule 14.06.2011    source источник