Нужна помощь с простым правилом перезаписи (разве это не должно быть легко?)

Все, что мне нужно, это переписать, чтобы изменить «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).

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


person agentOOjoe    schedule 10.06.2011    source источник
comment
Если мое решение вам не подходит, вы можете добавить RewriteLogLevel 1000 и RewriteLog /tmp/rewritelog в основной httpd.conf. Это будет регистрировать путь перезаписи apache, когда он пытается переписать URL-адрес. Это создаст МНОГО выходных данных, но это должно помочь выяснить проблему.   -  person spuriousdata    schedule 10.06.2011
comment
Я работаю на общем сервере для этого конкретного проекта, но я только что отправил электронное письмо в службу поддержки, чтобы спросить, как я могу получить доступ к журналу перезаписи. Если я получу ответ и смогу узнать что-нибудь из журналов, я дам вам знать.   -  person agentOOjoe    schedule 11.06.2011


Ответы (2)


Если вы добавляете правила в .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>
person spuriousdata    schedule 10.06.2011
comment
Спасибо за ответ! RewriteBase казался многообещающим решением, но мое правило перезаписи по-прежнему отправляет меня на страницу ответа, не найденную в моей теме. Я не уверен, насколько вы знакомы с Buddypress, но не думаете ли вы, что файл bp-core-catchuri.php вызывает конфликт? - person agentOOjoe; 11.06.2011

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

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

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

а также

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

person agentOOjoe    schedule 11.06.2011