Помогите с .htaccess и редиректом урлов
В общем есть старые урлы формата:
Код:
http://sitename.com/124124-ponyatnie-chepeu
Новые урлы сократили до:
Код:
http://sitename.com/124124
Как теперь настроить редирект, чтобы файл htaccess обрезал все до ID статьи.
Цитата: order.daemon
Думаю классическая проблема, пришел СЕО сказал заменить урлы на одни, потом на вторые.
В общем есть старые урлы формата:
Новые урлы сократили до:
Как теперь настроить редирект, чтобы файл htaccess обрезал все до ID статьи.
В общем есть старые урлы формата:
Код:
http://sitename.com/124124-ponyatnie-chepeu
Новые урлы сократили до:
Код:
http://sitename.com/124124
Как теперь настроить редирект, чтобы файл htaccess обрезал все до ID статьи.
ДО или ПОСЛЕ???
RewriteRule ^(\d+) /index.php?id=$1 [QSA]
А вообще что, кусок старого .htaccess выложить нельзя? коммерческая тайна?
Код:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Я не люблю блого-цмски (лень разбирать чужой код), а потому не подскажу...
По идее (как часто бывает) движки берут айди (который уже есть в ссылке, включая новую) и продолжение (ЧПУ)... Если продолжения (алиаса) нет, то берется только айди...
Может можно средствами WP переименовать алиасы страниц??? Вынимем из базы все алиасы и айдишники, обрабатываем регуляркой, формируем пакетный запрос, заливаем обратно (делаем бэкапы!!!)...
Ну или ручками...
Ведь файл htaccess работает в независимости от CMS, нужно только знать формулу как обрезать старые ссылки...
P.S Чебурашка выручай.
Цитата: order.daemon
В блоге я могу изменить формат ссылки, но старые остались у поисковиков в другом формате и хочется не терять пользователей которые придут по старой ссылке.
Ведь файл htaccess работает в независимости от CMS, нужно только знать формулу как обрезать старые ссылки...
P.S Чебурашка выручай.
Ведь файл htaccess работает в независимости от CMS, нужно только знать формулу как обрезать старые ссылки...
P.S Чебурашка выручай.
Он же тебе уже ответил
Цитата: Kesano
ДО или ПОСЛЕ???
RewriteRule ^(\d+) /index.php?id=$1 [QSA]
А вообще что, кусок старого .htaccess выложить нельзя? коммерческая тайна?
RewriteRule ^(\d+) /index.php?id=$1 [QSA]
А вообще что, кусок старого .htaccess выложить нельзя? коммерческая тайна?
(Вобще вроде так над: RewriteRule ^(\d+) /$1 [QSA] или так RewriteRule ^(\d+)-.*$ /$1 [QSA,L])
Цитата:
RewriteRule ^(\d+) /$1 [QSA] или так RewriteRule ^(\d+)-.*$ /$1 [QSA,L]
Не так не работает....
Цитата: order.daemon
Не так не работает....
Потому что у тебя сервер валится с 500-й ошибкой или браузер рассказывает про циклический запрос...
нужно нае**ать сервер...
RewriteRule ^(\d+).*$ /$1 [L]
Как-то так...
Суть...Если идет ссылка в виде /12345-tipa-chpu , мы редиректим её на /12345 отбрасывая другие символы...
И теперь запрос попадает под другое правило (родное ВП-шное) и ВП получит в качестве REDIRECT_URL /12345 , без ЧПУ...
А 301м редиректом не але? Или 301й не умеет разбирать регулярные выражения? мне тоже интересно, предстоит в будущем я чувствую...
Код:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(\d+).*$ /$1 [L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
RewriteEngine on
RewriteRule ^(\d+).*$ /$1 [L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>