Мои постоянные ссылки сломаны! Могу ли я использовать mod rewrite, чтобы игнорировать физический файл?


Веб-сайт, на котором я работаю, недавно опубликовал файл в корне своего веб-сайта под названием"2011.html ." Теперь любые записи в блоге 2011 года со структурой постоянных ссылок год/месяц/день/название поста не работают, а вместо этого загружают 2011.html файл. Пытаюсь открыть архив по адресу domain.com/2011 /также неправильно выводит файл. 2010 и другие годы работают, как и ожидалось.

Могу ли я каким-либо образом использовать mod_rewrite, чтобы подтвердить этот файл только тогда, когда 2011.html явно находится в URL-адрес и использовать стандартную структуру постоянных ссылок с каждым другим URL-адресом, чтобы восстановить функциональность блога?

Ссылка на этот файл была отправлена в маркетинговом электронном письме и получает много активности, поэтому ее нельзя переместить или переименовать.

Author: Nate Dudek, 2011-01-07

2 answers

Причина, по которой это вообще происходит, заключается в согласовании контента. /2011.html обычно не было бы доступно через /2011/, но согласование содержимого заставляет Apache автоматически искать файлы с именем 2011 (независимо от расширения), когда он не может найти папку до того, как передаст управление WordPress.

Это может быть весьма полезно, но если вам не особенно нужно согласование контента (сам WordPress в этом не нуждается), вы можете отключить его, добавив это в свой .htaccess:

Options -MultiViews

Если это не сработает или вам действительно нужно согласование содержимого, вы можете переименовать 2011.html во что-то другое и использовать mod_rewrite, чтобы убедиться, что ссылка все еще работает. Например, переименуйте 2011.html в happynewyear.html, а затем добавьте это в свой .htaccess (перед другими перезаписывающими элементами):

RewriteRule ^2011\.html happynewyear.html [L]
 10
Author: , 2011-01-11 11:08:49

Да, это именно то, для чего был разработан mod_rewrite. Однако вам потребуется переместить содержимое блога в другое место.

Например, если/2011/11/1/how-to-brew-beer.html была одна из статей в блоге, она больше не доступна там, так как теперь это неработающая ссылка. Так что вам придется переместить его в другое место:

   /2011_good/11/1/how-to-brew-beer.html

Ваше правило перезаписи должно соответствовать чему-либо, начинающемуся с /2011/.* и перепишите его на URL-адрес, который я опубликовал выше, предполагая, что это место, куда переместились статьи.

Перемещение контента может оказаться большой работой. Я на самом деле думаю, что тебе гораздо лучше просто передвинуть 2011.html файл в другом месте, а затем использовать для него правило перезаписи, поскольку это всего один файл в отличие от любой исторической информации.

Конечно, сейчас у нас 7 дней до 2011 года, поэтому я не могу себе представить, что на 2011 год нужно перенести так много постов:)

 1
Author: jmort253, 2011-01-07 09:15:28