Я недавно запустил сайт codeigniter и мне нужно сделать 301 переадресацию со старого сайта на новый. Они не будут работать с регулярными выражениями, поэтому, поскольку их всего несколько, я могу написать перенаправления для каждой страницы. Однако, после нескольких часов поиска в Google / исправления, я все еще не испытываю радости. URL-адреса старого сайта — это файлы .html, тогда как мои URL-адреса codeigniter являются «чистыми» URL-адресами. Вот мой текущий файл .htaccess:
<IfModule mod_alias.c>
redirect 301 "/index.html" /index.php
</IfModule>
<IfModule mod_rewrite.c>
DirectoryIndex index.php
RewriteEngine on
#This is the redirect I've been trying to make work
RewriteRule ^/about-us.html /index.php?/about-us [R=301,L]
RewriteCond $1 !^(index\.php|index\.html|lib|robots\.txt)
RewriteRule ^(.*)$ index.php?/$1
</IfModule>
Есть идеи?
Ты можешь использовать:
RewriteRule ^(about-us)\.html$ /index.php?/$1 [R=301,NC,L,QSA]
Или для перенаправления всего старого .html
ссылки по теме:
RewriteRule ^(.+?)\.html$ /index.php?/$1 [R=301,NC,L,QSA]
РЕДАКТИРОВАТЬ: Исходя из комментариев, вам просто нужно это правило, чтобы позаботиться о старых URL:
RewriteCond %{THE_REQUEST} \s/+(.+?)\.html[\s?] [NC]
RewriteRule ^ /%1 [R=302,L,NE]
Других решений пока нет …