htaccess 301 редирект

12
K
На сайте с 08.04.2010
Offline
89
1551

Комрады, подскажите пожалуйста.

Есть страницы вида site.ru/blog/pages/news.php?id=blabla. Преобразовал в site.ru/blabla.html

Не получается сделать редирект со старого адреса на новый.

Поиск курил. Вот топик с подобной задачей, но написать туда уже нельзя, топик устарел.

Мой htaccess:

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^blog/pages/news\.php$ /%1.html? [R=301,L]

RewriteRule ^(.*).html$ /blog/pages/news.php?id=$1 [L]
J
На сайте с 20.02.2014
Offline
120
jkm
#1

Проблема в том, что адрес /blog/pages/news.php как раз таки существующий файл, а второй RewriteCond проверяет, что адрес не является файлом.

Первые два RewriteCond тут лишние.

siv1987
На сайте с 02.04.2009
Offline
427
#2

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*).html$ /blog/pages/news.php?id=$1 [L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{QUERY_STRING} ^id=(.*)$

RewriteRule ^blog/pages/news\.php$ /%1.html? [R=301,L]

ftp123
На сайте с 18.11.2011
Offline
94
#3

Не буду создавать отдельную тему, тоже вопрос по редиректу.

Страницы имели такой вид:

site.ru/cat1/tovar.html, site.ru/cat2/tovar.html ... site.ru/catN/tovar.html

а теперь все имеют вид site.ru/tovar/tovar.html

как сделать редирект в таком случае?

Бесплатный SEO мини-аудит Вашего сайта от Александра Бурлай (http://burlayseo.ru/besplatnyj-audit/#podpis1)
siv1987
На сайте с 02.04.2009
Offline
427
#4

RewriteRule ^([^/]+/)([^/]+\.html)$ /tovar/$1 [R=301,L]

ftp123
На сайте с 18.11.2011
Offline
94
#5

Сделал, но что-то чутка не так. При таком редиректе страница меняется на site.ru/tovar/cat1/, а нужно site.ru/tovar/tovar.html.

Может быть я что-то сделал не так? Но скопировал как выше описано.

p.s. а тот товар, которые не требовал редиректа, стал иметь адрес site.ru/tovar/tovar/

siv1987
На сайте с 02.04.2009
Offline
427
#6
ftp123:
При таком редиректе страница меняется на site.ru/tovar/cat1/, а нужно site.ru/tovar/tovar.html.

Пардон, вместо $1 ставьте $2

ftp123
На сайте с 18.11.2011
Offline
94
#7
siv1987:
Пардон, вместо $1 ставьте $2

Теперь страница с товаром вообще не открывается =(

siv1987
На сайте с 02.04.2009
Offline
427
#8

Что значит вообще не открываются?

Добавлять нужно после rewriteEngine если есть реврайты

ftp123
На сайте с 18.11.2011
Offline
94
#9

Вот так выглядит htaccess. Пишет, что невозможно отобразить страницу. Вот например, главная страница и тд открываются.

DirectoryIndex index.php index.html

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com - http://www.prestashop.com/forums

<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>


# Disable Multiviews
Options -Multiviews

RewriteEngine on
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api/?(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
RewriteRule ^([^/]+/)([^/]+\.html)$ /tovar/$2 [R=301,L]

# Images
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]

# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-font-woff .woff

#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404

# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
siv1987
На сайте с 02.04.2009
Offline
427
#10

RewriteCond %{REQUEST_URI} !^/tovar/

RewriteRule ^([^/]+/)([^/]+\.html)$ /tovar/$1 [R=301,L]

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий