.htaccess переписать на основе наличия пути в URL - PullRequest
0 голосов
/ 11 января 2011

Вот сценарий, у меня есть веб-сайт, который раньше был статическим HTML-сайтом, и блог WordPress с использованием субдомена (http://blog.domain.com).

. Недавно я объединил все в одну установку WordPress. Чтобы сохранить старые ссылки, мне пришлось переписатьзапросы типа "http://blog.domain.com/index.php/2010/10/16/post-name" to" http://domain.com/index.php/2010/10/16/post-name". Моя проблема в том, что при попытке посетить просто "http://blog.domain.com", меня перенаправляют на" http://domain.com", когда я хочу перейти на "http://domain.com/index.php/blog".

Итак, еслипользователь запрашивает "http://blog.domain.com" (сам по себе, с косой чертой или без), я хочу, чтобы он шел" http://domain.com/index.php/blog"., если они запрашивают старый URL-адрес "http://blog.domain.com/some-link-to-a-post",, я хочу, чтобы он перенаправил на" http://domain.com/some-link-to-a-post". Другими словами, если это URL к реальному сообщению, я просто хочу удалить поддомен «блог». Если это старая ссылка на главную страницу блога, я хочу удалить поддомен «блог» и добавить »/index.php/blog"

http://blog.domain.com/ -> http://domain.com/index.php/blog

http://blog.domain.com/index.php/2010/10/16/post-title -> http://domain.com/index.php/2010/10/16/post-title

Надеюсь, это понятно. Я неЭксперт по htaccess, так что, надеюсь, кто-нибудь может мне помочь. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 12 января 2011

Я не мог заставить это решение работать.Тем не менее, я использовал следующее:

RewriteCond %{HTTP_HOST} ^blog\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/index.php/blog/$1 [R=301,L]

Это заканчивается URL-адресом вроде http://domain.com/index.php/blog/index.php/2010/06/04/post-title,, но Wordpress достаточно умен, чтобы это исправить.

0 голосов
/ 11 января 2011

Использование команды [L] в конце перезаписи скажет htaccess, что это последнее правило, которому оно должно соответствовать.Если вы поместите правило, соответствующее вашему первому условию, вверху, а другое правило переписывания, которое, как вы сказали, уже создали после него, вы должны получить ожидаемый результат.

Попробуйте:

RewriteRule ^blog.domain.com(/?)$ domain.com/index.php/blog [L]
# Your other rewrite here #
...