mod_rewrite, проблема 301

В настоящее время я могу получить доступ к конкретному сайту двумя способами:

 1. http://a.com/foo/bar
 2. http://a.com/index.php?url=foo/bar

То, что я пытаюсь достичь, - это разрешить делать это только первым способом и перенаправить 301 со второго на первый. Вот код, который я сделал до сих пор и поместил в.htaccess:

<IfModule mod_rewrite.c>  
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

  #tricky part
  RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?url=?(.*)\ HTTP/
  RewriteRule ^index\.php$ http://a.com/$1 [R=301,L]
</IfModule>

В настоящее время он выполняет почти всю работу, перенаправляет index.php в /, но index.php? Url=foo/bar в /? Url=foo/bar, и мне не удается сделать это правильно. ТИА.

1 ответ

Попробуй это

RewriteCond %{query_string} ^url=(.*)$
RewriteRule ^.*index.php$ /$1? [R=301]
Другие вопросы по тегам