2011-06-10 51 views
0

所有我需要的是将改变“domainXYZ.com/anyphrase”变成“domainXYZ.com”重写需要用简单的重写规则帮助(should't这容易吗?)

这里是我使用的是什么:

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域映射插件和domainXYZ.com上的buddypress。 domainXYZ.com是映射的域名,而不是实际的子域名。

我假设我的重写规则会加载domainXYZ.com/index.php,它会加载wordpress网站的主页。但是,我的buddypress皮肤中显示“未找到页面”响应(不是完整的错误404页面)。

由于任何人谁可以帮助,乔

+0

如果我的解决方案不适合您,可以将RewriteLogLevel 1000和RewriteLog/tmp/rewritelog添加到主httpd.conf中。这将记录Apache重写路径,因为它试图重写URL。它会创建很多输出,但它应该有助于找出问题。 – spuriousdata 2011-06-10 18:33:12

+0

我正在为这个特定项目建立一个共享服务器,但我只是通过电子邮件发送支持来问我如何访问重写日志。如果我听到回音,并且能够从日志中学到任何东西,我会告诉你。 – agentOOjoe 2011-06-10 20:30:11

回答

0

如果你在一个.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> 
+0

感谢您的回应! RewriteBase似乎是一个很有前途的解决方案,但是我的重写规则仍然将我发送到我的主题中的“页面未找到”响应页面。 我不确定您对Buddypress有多熟悉,但是您认为bp-core-catchuri.php文件可能会导致一些冲突吗? – agentOOjoe 2011-06-10 20:11:45

0

想到我会让人们知道我在这个挑战中走了一条不同的路线。不要试图让我的重写工作,我只是改变了WP查处了404

不幸的是,我不得不改变一些WP核心文件,但功能我改变了:

set_404();(此让我给我的主题传达某些404的应改为加载主页模板)

status_header();(从发送404头停止输入网址不存在的特定类型时)