2015-05-26 1 views
2

Если доступ пользователей этот URL (http://domain.com/products/view-product.php?productID=21) в браузере, он должен показать страницу http://domain.com/new/view-product.php?pID=21Как переписать URL-адрес, содержащий параметры?

Я пытался сильфон кода, но оно не работает, поэтому, пожалуйста, помогите мне решить.

RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{THE_REQUEST} products/view-product.php 
RewriteRule ^products/view-product.php?productID=21$ new/view-product.php?pID=21 [R=301,L] 

продуктов/показы product.php физически существует на сервере, все равно я хочу переписать его на новую страницу, что я спроектировал в настоящее время.

+0

Возможный дубликат [URL Rewrite GET parameters] (http://stackoverflow.com/questions/18162686/url-rewrite-get-parameters) – umka

+0

@umka Нет, он не дублирует ... старый url и каталог и файлы существуют, но я хочу переписать его на новый url. – rkaartikeyan

+0

посмотрите на веб-сайте, это поможет вам больше узнать о RewriteRule 'https: // www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners /' – alexandreferris

ответ

3

Вы не можете сопоставлять строку запроса (все после ?) в правиле перезаписи. Для соответствия этому регулярному выражению используется только URI. Вы должны использовать условие:

RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{THE_REQUEST} products/view-product.php\?productID=21($|\ |&) 
RewriteRule ^products/view-product.php$ /new/view-product.php?pID=21 [R=301,L] 
+0

спасибо за ваш быстрый ответ .. его неработающие ... продукты/view-product.php физически существуют на сервере. – rkaartikeyan

+0

@ rkaartikeyan works [отлично подходит для меня] (http://i.stack.imgur.com/uhXQh.png) –

+0

хотя файлы существуют ???? – rkaartikeyan

2

Вы можете сопрягать строку запроса RewriteCond и %{QUERY_STRING} переменной. Параметры строки запроса не доходили до RewriteRule.

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^productID=21$ 
RewriteRule ^products/view-product\.php$ /new/view-product.php?pID=21 [R=301,L] 

Или, если вы хотите, чтобы перенаправлять все PRODUCTID годов:

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^productID=([0-9]+)$ 
RewriteRule ^products/view-product\.php$ /new/view-product.php?pID=%1 [R=301,L] 
+0

Я пробовал ... его не работает ... – rkaartikeyan

+0

Попробуйте временно отключить любые другие директивы rewrite. – umka

0

GET значение ProductID, а затем перенаправить на новый URL.

Смежные вопросы