301 перенаправления в htaccess не подтверждают строки запроса
Мне нужно перенаправить старую динамическую страницу на новую ссылку-URL:
Redirect 301 http://www.domain.com/index.php?id=100 http://www.domain.com/newhello
Тем не менее, я продолжаю получать ошибку 404:
Запрашиваемый URL /index.php не найден на этом сервере.
Это как если бы apache игнорировал строку запроса и смотрел только на часть index.php в URL.
Я также играл с RewriteRule и RedirectMatch 301, но у меня был тот же результат. Любой совет будет принят во внимание.
РЕДАКТИРОВАТЬ - ниже - вставка всего содержимого файла.htaccess. Обратите внимание, что это в корневом каталоге:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !newroot/
RewriteRule (.*) /newroot/$1 [L]
#successful 301 redirect or mod_rewrite directives will be listed from here.
1 ответ
Решение
Вы не можете сопоставить QUERY_STRING, используя Redirect
директивы. использование mod_rewrite
вместо этого, как это в вашем корневом.htaccess файле:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=100$
RewriteRule ^index\.php$ http://www.domain.com/newhello? [L,R=301]
RewriteCond %{HTTP_HOST} ^(www.)?domain\.com$
RewriteCond %{REQUEST_URI} !/newroot/
RewriteRule (.*) /newroot/$1 [L]