2015-05-22 4 views
1

У меня есть код ниже HTAccess на месте:301 RedirectMatch - Много ссылок

Options +FollowSymLinks 

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RedirectMatch 301 ^/([^-]+)-([^-]+)-([^-]+)-([^-]{2})\.html$ /$1-$2-in-$3-$4.html 
RedirectMatch 301 ^/([^-]+)-([^-]+)-([^-]+)\.html$ /$1-$2-in-$3.html 

# BEGIN WordPress 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

Я пытаюсь автоматически перенаправлять страницы включить «в» в новой структуре URL. Две вышеперечисленные строки RedirectMatch работают в двух сценариях, но мне нужен третий сценарий.

Первая RedirectMatch линия работает для города (одно имя):

domain.com/music-classes-dallas-tx.html ===> domain.com/music-classes-in-dallas-tx. HTML

Вторая RedirectMatch линия работает для состояний:

domain.com/music-classes-texas.html ===> domain.com/music-classes-in-texas.html

Я теперь нужно, чтобы RedirectMatch работал с названиями городов, которые имеют 2-3 слова. Например, The Colony TX или Новый Орлеан LA. Вышеприведенный код не улавливает их.

Кто-то сказал мне использовать нижеследующее, но он вызывает цикл переадресации и бросает кучу входных данных in-in-in-in-in в URL.

RedirectMatch 301 ^/([^-]+)-([^-]+)-(.+)-([^-]{2})\.html$ /$1-$2-in-$3-$4.html 

ответ

3

Можете ли вы попробовать это с этими правилами перезаписи. Это проверено для меня с пространством в названии. И не забудьте очистить кеш, прежде чем пытаться их использовать.

RewriteRule ^([^-]+)-([^-]+)-(?!in)([^/]+)-([^-]{2})\.html$ /$1-$2-in-$3-$4.html [R=301,L] 
RewriteRule ^([^-]+)-([^-]+)-(?!in)([^-]+)\.html$ /$1-$2-in-$3.html [R=301,L] 

С этим правилом это работает для меня.

http://example.com/music-classes-dallas-tx.html 

или

http://example.com/music-classes-san-antonio-tx.html 
+0

Спасибо! Кажется, что цикл повторяется с ошибкой переадресации: domain.com/music-classes-in-in-in-in-in-in-in-in-in-in-in-in-in-in-in -в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в -в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в-в in-in-in-in-in-in-in-in-in-in-in-in-dallas-tx.html – user1858780

+0

@ user1858780 моя ошибка. Я тестировал его с помощью сайта .htaccess tester. Я действительно проверил это в своей системе, и правило будет работать так, как ожидалось. Я отредактировал первое правило. –

+0

Бум! Вы гений! Ты заработал! Спасибо!!! :) – user1858780

2

Вы должны использовать правила перезаписи вместо RedirectMatch, потому что у вас есть Wordpress установка, которая имеет правила маршрутизации. Это может привести к тому, что переадресации станут неустойчивыми.

Лучший способ справиться с этим, вероятно, сделать отрицательный смотреть вперед для «В» и перенаправлять:

RewriteRule ^([^-]+)-([^-]+)-(?!in-)(.+)\.html$ /$1-$2-in-$3.html [R=301,L] 
+0

Это действительно работает для всех форматов города/штата. Благодаря!! Только проблема заключается в том, что он перепутал обычные URL-адреса тоже ... пример: domain.com/careers-jobs-culinary-arts-degree.html перешел на сайт domain.com/careers-jobs-in-culinary-arts-degree. Любой способ предотвратить это? – user1858780

+0

@ user1858780 Как вы говорите разницу между городами и городами? –

+0

Ответ над вашим фактически работает сейчас после редактирования плаката ... все установлено. Спасибо за вашу помощь! – user1858780

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