2015-01-11 3 views
0

Я искал, читал и провел последние 8 дней, пытаясь понять, как конвертировать динамические ссылки в «красивые» ссылки..htaccess RewriteCond внешние ссылки

Я начинаю использовать .htaccess и переписывать правила.

У меня есть этот базовый код в моем файле .htaccess:

Options +FollowSymlinks 
RewriteEngine on 

RewriteRule ^pc-download/([0-9]+)/([^/]*)\.html$ /cgi/pc_read\.pl\?show=$1 [NC] 

Это внутренне перенаправлять мои ссылки на соответствующий файл CGI и возвращает элемент.

Проблема, которая возникает у меня, связана с внешними ссылками в результатах поиска. Из того, что я прочитал &, прочитал &, я должен использовать RewriteCond% {THE_REQUEST}, а затем RewriteRule.

Поскольку я изменил структуру своих ссылок, я не знаю, возможно ли то, что я хочу сделать.

В RewriteRule для внутренних ссылок первая часть является «жестко закодированной», то есть я делаю часть кода для загрузки pc-download. Следующий ([0-9] +) - это идентификатор элемента, который является переменной? Show = $ 1. Вот сложная часть, ([^ /] *) - имя актива, которое находится в базе данных, но не в исходном (старом) URL-адресе. Во внутренних ссылках я его закодировал на странице, поэтому любые ссылки на моих страницах автоматически генерируются.

Итак, вот так, как я хотел бы внешнюю ссылку, чтобы перейти:

Внешняя ссылка: www.xyz.com/cgi/script.pl?show=001 целевой страницы: www.xyz.com /pc-download/001/name-of-product.html

Я посмотрел, возможно, на использование RewriteMap. Я создал txt-файл с «ID Name of Product» внутри, но поместив его в мой файл .htaccess, он убил весь сайт, даже не включив RewriteRule.

Я просто вращаю голову ни для чего, или я направился по правильному пути?

+0

Вы не можете использовать директиву 'RewriteMap' в htaccess, ее можно использовать только в конфигурации центрального сервера. Если у вас нет доступа к этому, вам лучше переписать все эти ссылки на скрипт, который определяет правильную цель, а затем перенаправляет туда. – CBroe

+0

@CBroe, у меня нет доступа к центральному серверу, так что опция отсутствует.Что касается скрипта, я не знаком с каким-либо языком сценариев достаточно хорошо, чтобы понять, насколько трудна эта задача. По крайней мере, я знаю теперь, чтобы перестать двигаться по направлению RewriteMap. – cooter

+0

Что вы используете для отображения своего сайта? – Sumurai8

ответ

0

не был в состоянии понять, как получить внешнюю ссылку, чтобы перейти на новую страницу & получить новую структуру ссылку/переменную, поэтому я изменил .htaccess:

Options +FollowSymlinks 
RewriteEngine on 

RewriteRule ^pc-download/([0-9]+)/([^/]*)\.html$ /cgi/pc_read\.pl\?show=$1&mytemplate=Moved [NC] 

Изменено старый шаблон страницы с мета обновления:

<META http-equiv="refresh" content="0;URL=http://www.example.com/pc-download/[[gameid]]/[[assetname]].html"> 

Это получает 2 переменные [[GameID]] & [[assetname]] из моей базы данных с помощью сценария CGI, который работает мой веб-сайт и перенаправляет на соответствующую структуру URL.

Затем я создал новую страницу, на которой отображаются старые данные базы данных, как раньше, и все URL-адреса совпадают в браузере.

Это не идеальное решение, но, похоже, оно работает. Я надеюсь, что обновление метаданных позволяет поисковым системам знать, что это постоянное изменение/перемещение, и я смогу удалить этот шаг/страницу через пару месяцев.

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