Перезапись URL для URL с кодом страны - PullRequest
2 голосов
/ 18 июля 2011

Я пишу многоязычный веб-сайт.Поэтому мне нужна помощь с проблемой перезаписи URL.

Случай:

  • Когда кто-то посещает www.example.com без добавления кода страны (nl, en, de) htaccess перенаправляет посетителя на сайт www.example.com/nl/ ig RewriteRule !(nl|en|de)(.*).* /nl/ [R=301,L]
  • Сайт обновлен и получил много URL-адресов на сайт (Google, форумы).ig www.example.com/oldpage-nomore.html.То, что я хотел бы, является следующим;htaccess должен обнаружить, что запрос uri не содержит nl, en или de, и должен перенаправить на pagenotfound.php.RewriteRule ^(.*)\.html /public/oldurl?section=nl&notfound=$1$2&basehref=true&%1 [PT,L] проблема с этим правилом перезаписи: перенаправляются все файлы, заканчивающиеся на .html.

Я ищу следующее:

  • Когда кто-топосещает www.example.com и не вводит uri запроса, это должно перенаправить на www.example.com/nl/
  • Когда есть запрошенный uri, который не содержит код страны (nl | en | de), чем перенаправить на pagenotfound.php

Я пробовал следующее, но это не работает:

RewriteCond %{REQUEST_URI} !^(nl|en|de)$
RewriteRule ^([a-z]{2})/(.*)\.html$ /pagenotfound.php?page=$2 [L,R=404]

Я надеюсь, что кто-то может помочь.Заранее спасибо.

1 Ответ

2 голосов
/ 23 июля 2011

Попробуйте поместить этот файл .htaccess в корневую папку сервера:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/?$
RewriteRule ^.*$ /nl/ [R]


RewriteCond %{REQUEST_URI} !^/(nl|en|de)
RewriteRule ^.*/(.*)\.html$ /pagenotfound.php?page=$2 [L,R=404]

(возможно, вы допустили несколько ошибок, я пытался их исправить) Я не уверен с первым регулярным выражением RewriteCond% {REQUEST_URI} - возможно, удалите знак вопроса или косую черту, я не сейчас ... не могу проверить сейчас.

...