2015-01-24 3 views
0

Я пытаюсь получить этот недружественный ссылке:Использование mod_rewrite/RewriteRule для создания SEO дружественных URL-адресов

http://test.mysite.com/featured1new.php?homedetails=12-Magnolia-Court-Branson-MO-65616&ID=11315943&PHOTOID=20140401022411163178000000

Для отображения в этой дружественной связи при использовании моего сайта:

http://test.mysite.com/homedetails/12-Magnolia-Court-Branson-MO-65616/ID/11315943/PHOTOID/20140401022411163178000000

Это код в моем файле .htaccess в главном каталоге:

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule homedetails/(.*)/ID/(.*)/PHOTOID/(.*)/ featured1new.php?homedetails=$1&ID=$2&PHOTOID=$3 
RewriteRule homedetails/(.*)/ID/(.*)/PHOTOID/(.*) featured1new.php?homedetails=$1&ID=$2&PHOTOID=$3 

Проблема заключается в том, что ссылка по-прежнему отображает старый способ на веб-сайте, однако, если я нахожу новый способ RewriteRule прямо в браузере, он отлично работает. Поэтому часть этого работает так, как мне это нужно.

Я должен изменить свой html-код на веб-сайте, чтобы соответствовать/использовать RewriteRule? (После прочтения этого сайта в течение достаточно долгого времени, я не думаю, что мне нужно сделать это) Спасибо за любую помощь

+0

чтения: http://stackoverflow.com/questions/20563772/reference-mod-rewrite-url-rewriting-and-pretty-links-explain и «Что не делает mod_rewrite» – Croises

+1

Спасибо, Croises, эта ссылка и Justin lurman была отличной помощью! – Mdg

ответ

0

Проблема является связь по-прежнему отображается старый путь на сайте

Ваше правило просто разрешает new url format и внутренне переписывает его на эквивалент old format.

Если вы хотите, чтобы old format перенаправлялся на new format (без бесконечного цикла), вам нужно добавить код.

Вы можете заменить текущий код этого один

Options +FollowSymLinks -MultiViews 
RewriteEngine On 

RewriteCond %{THE_REQUEST} \s/featured1new\.php\?homedetails=([^&\s]+)&ID=([^&\s]+)&PHOTOID=([^&\s]+)\s [NC] 
RewriteRule^/homedetails/%1/ID/%2/PHOTOID/%3? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^homedetails/([^/]+)/ID/([^/]+)/PHOTOID/([^/]+)/?$ /featured1new.php?homedetails=$1&ID=$2&PHOTOID=$3 [L] 

NB: даже если этот код перенаправляет old format, то лучше заменить ссылки с новым форматом

+0

Большое вам спасибо! Это сработало и объясняет многое гораздо лучше! Я перейду и заменим старые ссылки новым форматом. Теперь единственное, что изменило каждую ссылку на новой странице, чтобы включить новую ссылку RewriteRule +. – Mdg

+0

Я не уверен, что понял ваше последнее предложение –

+0

Когда я нажал на ссылку, как «Свяжитесь с нами», RewriteRule был применен к этой ссылке с прилагаемым к нему contact.php. Итак, я изменил «новый формат url» на тире вместо косой черты, затем я изменил ссылки в своем html, чтобы соответствовать новому правилу, которое отлично работает! Я все еще не могу понять, как сделать «старый формат» RewriteRule использовать дефисы вместо косых черт, однако мне это совсем не нужно. Благодаря тонну! :-) – Mdg

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