2016-07-08 3 views
0

Я строй сайта на WordPress, и мой клиент решил, что она хочет изменить название страницы И псевдоним после запуска301 перенаправление в .htaccess тайны

старого: http://www.successfulspeakernow.com/speech-doctor

нового: http://www.successfulspeakernow.com/executive-speech-doctor

Google уже знает о старом URL, поэтому нам нужно написать 301 Redirect в файле .htaccess.

Я попробовал пару вещей, но безуспешно, так что может кто-нибудь сказать мне, что случилось с файлом .htaccess ниже (я скопировал все содержимое файла):

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
# hieronder van niet-www naar www 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
# hieronder van http naar https 
# RewriteCond %{HTTPS} off 
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 
RedirectMatch 301 ^/speech-doctor/ http://www.successfulspeakernow.com/executive-speech-doctor/ 
RedirectMatch 301 ^/speech-doctor-written-review-plus-2-hour-consult http://www.successfulspeakernow.com/executive-speech-doctor/written-review-plus-2-hour-consult 
RedirectMatch 301 ^/speech-doctor-written-review-only http://www.successfulspeakernow.com/executive-speech-doctor/written-review-only 
RedirectMatch 301 ^/speech-doctor-2-hour-consult http://www.successfulspeakernow.com/executive-speech-doctor/2-hour-consult 
</IfModule> 

# END WordPress 


AddHandler application/x-httpd-php56 .php .php5 .php4 .php3 

Любая помощь , очень признателен!

Thom

ответ

0

Я проверил свои правила предложенные им RedirectMatch и они прекрасно работали на моей тестовой системе. Кроме того, вы на самом деле не сказали, что не работает. Переадресовывает ли он вообще? Выбросить ошибку? Перейдите на исходную страницу? Продолжить цикл? etc

Убедитесь, что ваш кеш браузера чист? Включение/выключение перенаправления потребует чистого кеша браузера, иначе браузер автоматически использует перенаправление, о котором он уже знает.

Кроме того, если вы делаете это в WordPress, то да, это можно сделать в файле .htaccess, но это очень много проще, если использовать плагин

https://wordpress.org/plugins/redirection/

надежду, что помогает,


Хауди, Если бы еще посмотреть в этом сегодня, ваша проблема, вероятно, связано с mod_alias не доступны на сервере. @jordi выше правильно

RedirectMatch находится в mod_alias, где RewriteRule находится в mod_rewrite. Если I mod_alias инвалидов сервер возвратил 404 для директив RedirectMatch, наряду с этой ошибкой в ​​журнале апача /.htaccess: Неверная команда «RedirectMatch», возможно, опечатка или определяется модуль не входит в конфигурацию сервера

Ответ Jordi Nebots является точным.

+0

привет, URL-адреса дали мне 404 страницу. Так что это вряд ли то, что я хотел бы. Я очищал кеш несколько раз, а также пробовал другие браузеры. Я не хочу использовать плагины, если есть более быстрый способ. –

+0

Howdy, Если бы вы в этом позаботились об этом подробнее. – Dave

0

Не используйте ведущую косую черту в вашем регулярном выражении. Кроме того, я бы сделал необязательным косой чертой.

RedirectMatch 301 ^speech-doctor-written-review-plus-2-hour-consult/? http://www.successfulspeakernow.com/executive-speech-doctor/written-review-plus-2-hour-consult 
RedirectMatch 301 ^speech-doctor-written-review-only/? http://www.successfulspeakernow.com/executive-speech-doctor/written-review-only 
RedirectMatch 301 ^speech-doctor-2-hour-consult/? http://www.successfulspeakernow.com/executive-speech-doctor/2-hour-consult 
RedirectMatch 301 ^speech-doctor/? http://www.successfulspeakernow.com/executive-speech-doctor/ 

Edit: Я переместил свой первый 301 в последнюю позицию, чтобы избежать столкновений с другими правилами, если URL посещается без пробелов.

Пожалуйста, попробуйте переместить эти четыре правила ниже RewriteBase.

RewriteBase/
# Move 301 redirects here # 
RewriteRule ^index\.php$ - [L] 

Чтобы ответить на комментарий: Я съехал первое правило, потому что если (например) Вы посетите URL:

http://www.successfulspeakernow.com/speech-doctor-2-hour-consult

Этот URL соответствует обоим ^speech-doctor-2-hour-consult/? и ^speech-doctor/? правила. Итак, если RedirectMatch 301 ^speech-doctor/? - ваше первое правило перенаправления, то произойдет то, что http://www.successfulspeakernow.com/speech-doctor-2-hour-consult будет перенаправлен на http://www.successfulspeakernow.com/executive-speech-doctor/, поскольку правила обрабатываются сверху донизу.

+0

Привет, Jordi, спасибо за усилия, но это не сработает. Все ссылки переходят на страницу 404. Во-вторых: я не понимаю, почему вы хотели бы переместить речевого врача 301 на дно, так как другие используют тире не слэш для остальной части URL-адреса, поэтому они рассматриваются как совершенно разные URL-адреса. Наконец: я подумал: может быть, что-то еще в файле .htaccess, что мешает правилам работать? –

+0

Пожалуйста, @ThomsterdamWebDesign, см. Мой отредактированный ответ. –

+0

Привет, Jordi, Thanx для вашего объяснения. Вы правы в отношении порядка перенаправления. Тем не менее, перенаправления все еще не работают. Возможно ли что-то еще в файле .htaccess, который предотвращает работу правил? Или будет другая причина, почему это не сработает? –

0

В качестве альтернативы вы пробовали использовать RewriteRule для выполнения своих переадресаций? Это то, что я обычно делаю ...

RewriteRule ^speech-doctor-written-review-plus-2-hour-consult/? http://www.successfulspeakernow.com/executive-speech-doctor/written-review-plus-2-hour-consult [R=301,L] 
RewriteRule ^speech-doctor-written-review-only/? http://www.successfulspeakernow.com/executive-speech-doctor/written-review-only [R=301,L] 
RewriteRule ^speech-doctor-2-hour-consult/? http://www.successfulspeakernow.com/executive-speech-doctor/2-hour-consult [R=301,L] 
RewriteRule ^speech-doctor/? http://www.successfulspeakernow.com/executive-speech-doctor/ [R=301,L] 

Кроме того, я предполагаю, что вы проверили у вас действительно есть mod_rewrite включен Apache и файл .htaccess обрабатывается, не так ли?

+0

Позвольте мне получить это прямо: для RewriteRule мне нужен mod_rewrite, не так ли? А для перенаправления мне не нужен mod_rewrite, не так ли? Как я писал ранее, в своем вопросе я скопировал весь файл .htaccess, и я спросил выше, есть ли что-то в моем файле .htaccess? Я не специалист .htaccess, поэтому, пожалуйста, несите меня. ... –

+0

Для 'RewriteRule' вам нужен' mod_rewrite'. Для 'RedirectMatch' вам нужны' mod_alias'. ** Но ** весь ваш код находится внутри блока '', поэтому, если у вас ** нет ** включен 'mod_rewrite', ничего на вашем' .htaccess' не будет обработано. –

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