Wordpress,.htaccess和mod_rewrite:如何添加重定向规则?

时间:2010-08-09 09:34:18

标签: php wordpress .htaccess mod-rewrite

目前,我有一个标准的Wordpress 3.0安装,.htaccess文件如下所示:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

我想重写URL,以便我可以提供一些自动生成的页面,但将其保留在Wordpress主题中。例如,转到/event/123/应从我的数据库中提取事件#123的详细信息,而不存在Wordpress中存在的页面。

我以为我可以在Wordpress中创建一个“通用事件”页面(例如/event/generic/)并让它采用参数,例如:

RewriteRule ^event/(\d+)/$ /event/generic/?q=$1 [L]

然而,这似乎不起作用,它只是带我到Wordpress 404页面。我想我可能会在这里问很多Wordpress,但肯定有可能吗?

我想到的唯一其他解决方案是在主题中破解404.php。

更新

我的.htaccess看起来像这样:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^eventtest/(\w+)/$ /events/event-single/ [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

如果我转到/eventtest/testing/,那么:

$_SERVER['REQUEST_URI'] is /eventtest/testing/
$_SERVER['REDIRECT_URL'] is /events/event-single/

Wordpress中存在/events/event-single/页面,但如果我转到/eventtest/testing/,我会收到404页。

2 个答案:

答案 0 :(得分:2)

没有必要触摸你的.htaccess - 你可以在WordPress中做你想做的一切!

查看rewrite APImy answer on a similar topic

答案 1 :(得分:0)

该规则看起来很好。但是请确保将该规则放在Wordpress的“全包”规则之前,以便在Wordpress的最后一条规则捕获之前重写请求。所以试试:

RewriteRule ^index\.php$ - [L]
RewriteRule ^event/(\d+)/$ /event/generic/?q=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]