URL RewriteRule в .htaccess для параметров запроса index.php

Пример URL: –

  • www.domain.com/index.php?bob
  • www.domain.com/index.php?jane
  • www.domain.com/index.php?fred

Нужно переписать как: –

  • www.domain.com/bob
  • www.domain.com/jane
  • www.domain.com/fred

Пробовали с большим количеством вариантов сейчас, но ближайший я могу добраться до: –

  • www.domain.com/?bob
  • www.domain.com/?jane
  • www.domain.com/?fred

Ниже в .htaccess достигается это …

RewriteRule ^(.*)$ index.php?$1 [L,QSA] RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s(.*)/index\.php [NC] RewriteRule ^ %1 [R=301,L] 

Пожалуйста, может кто-нибудь указать, что мне нужно изменить, чтобы ящик? (вопросительный знак) в URL-адресе?

редактировать

Просто заметили, что с момента применения ответа, данного anubhava ниже того, что robots.txt, например, не разрешает файл .txt, а просто отображает главную страницу.

.htaccess ниже: –

 RewriteEngine On RewriteBase / RewriteCond %{THE_REQUEST} \s/+index\.php\?([^\s&]+) [NC] RewriteRule ^ %1? [R=301,L] RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteRule ^download/(.*) /index.php?route=error/not_found [L] RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #pos1 RewriteRule ^([^/]+)/?$ index.php?$1 [L,QSA] <-- RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] #pos2 

Если я добавлю <- строку в pos1, URL-адрес robots.txt вернет ошибку 404 страницы, не найденную.

Если я добавлю <- строку в pos2, URL-адрес robots.txt просто отобразит главную страницу.

Edit2

Тем временем я исключил robots.txt из перезаписи, добавив следующее в Rewrite Base / : –

 RewriteRule ^robots.txt - [L] 

Вы можете использовать этот код:

 RewriteEngine On RewriteCond %{THE_REQUEST} \s/+index\.php\?([^\s&]+) [NC] RewriteRule ^ %1? [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/?$ index.php?$1 [L,QSA] 

Вы также можете использовать это:

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]