2016-01-02 4 views
0

Я пытаюсь использовать RewriteRule в Htaccess для постоянного перенаправления этого:Htaccess Apache RewriteRule .asp на .php

http://www.example.com/store/scripts/prodView.asp?idproduct=240

в

http://www.example.com/index.php?route=product/product&path=59&product_id=50

Я пробовал:

Опции + FollowSymlinks

RewriteEngine На

RewriteCond% {QUERY_STRING}^idproduct = 240 $ [NC]

RewriteRule^магазин/скрипты/prodView.asp $ index.php? \ Путь = продукт/продукт \ & путь \ = 59 \ & product_id \ = 50? [L, NC, R = 301]

.htaccess в корне

Можно ли предположить, где может быть неправильно? Спасибо

ответ

1

Try с:

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{QUERY_STRING} ^idproduct=240$ [NC] 
RewriteRule ^store/scripts/prodView\.asp$ index.php?route=product/product\&path=59\&product_id=50 [L,NC,R=301] 

Без \? в RewriteRule URL

+0

Спасибо за подсказку, но это не сработало – user3001792

+1

В чем проблема? Сообщение об ошибке ? Страница индекса не загружена или неправильная ссылка? – Croises

+0

Croises 13, я должен был сказать это в оригинальном вопросе: проблема в том, что браузер не переписывает URL-адрес вообще с (неправильным) старым, все еще в адресной строке URL. Это приводит к возникновению ошибки (не удается найти). Это как если htaccess игнорируется, но я знаю, что это не так, как следуют другие команды в htaccess – user3001792

0

Я решил эту проблему с помощью croisés, хотя я не знаю полностью причину проблемы.

В моем первоначальном вопросе, для краткости, релевантности и ясности, я оставил некоторый код RewriteRule, который лежал над кодом, который я писал. Этот код был предоставлен программным обеспечением корзины покупок.

Совокупность кода RewriteRule было так:

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/

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 %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) 
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] 

#my code start 
RewriteCond %{QUERY_STRING} ^idproduct=240$ [NC] 
RewriteRule ^store/scripts/prodView\.asp$ index.php?route=product/product\&path=59\&product_id=50 [L,NC,R=301] 
#my code end 

croisés вопрос ниже меня думать «почему мой код игнорируется?». Поэтому я поставил свой код над кодом корзины RewriteRule и теперь он работает, хотя я не понимаю, почему другой код мешал моему коду.

Код, который теперь работает в:

Options +FollowSymlinks 
RewriteEngine On 

RewriteBase/

#my code start 
RewriteCond %{QUERY_STRING} ^idproduct=240$ [NC] 
RewriteRule ^store/scripts/prodView\.asp$ index.php?route=product/product\&path=59\&product_id=50 [L,NC,R=301] 
#my code end 

#original code 
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 %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) 
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] 
#original code 

Я думаю, я поэтому ответил на мой вопрос, но с помощью croisés. Приносим извинения за то, что вы оставили важную информацию в исходном вопросе