Нужна помощь с простым правилом перезаписи (разве это не должно быть легко?) - PullRequest
0 голосов
/ 10 июня 2011

Все, что мне нужно, это переписать, что изменит "domainXYZ.com/anyphrase" на "domainXYZ.com"

Вот что я использую:

RewriteCond %{HTTP_HOST} ^domainXYZ\.com
RewriteCond %{SCRIPT_FILENAME} !wp-admin
RewriteCond %{SCRIPT_FILENAME} !activity
RewriteCond %{SCRIPT_FILENAME} !members
RewriteCond %{SCRIPT_FILENAME} !groups
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php [L]

Примечания: я добавил выше в начало моего .htaccess (в корне WP). Я использую многосайтовый WP 3.1.3 (поддомен), плагин WP MU Domain Mapping и buddypress на domainXYZ.com. domainXYZ.com - это сопоставленное имя домена, а не фактический поддомен.

Я предполагал, что мое правило перезаписи загрузит domainXYZ.com/index.php, что загрузит домашнюю страницу для сайта WordPress. Тем не менее, я получаю ответ «страница не найдена», отображаемая в моем скипе buddypress (не полная ошибка 404 страницы).

Спасибо всем, кто может помочь, Джо

Ответы [ 2 ]

0 голосов
/ 11 июня 2011

Просто подумал, что дам людям знать, что я пошел другим путем с этим испытанием.Вместо того чтобы пытаться заставить переписать свою работу, я просто изменил способ работы WP с 404.

К сожалению, мне пришлось изменить некоторые файлы ядра WP, но функции, которые я изменил, были:

set_404(); (это позволило мне сообщить моей теме, что некоторые 404 должны вместо этого загрузить домашний шаблон)

и

status_header(); (чтобы прекратить отправку заголовка 404, когда определенныйтип несуществующего URL введен)

0 голосов
/ 10 июня 2011

Если вы добавляете правила в .htaccess, я считаю, что вам нужно использовать RewriteBase.

Это должно работать

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

В основном файле httpd.conf, внутри блока каталога для корня документа, внизу, вы можете добавить это (вместо .htaccess):

<Directory /my/document/root>
    # Other stuff here
    # ...

    # make this last:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</Directory>
...