目前,我有一个标准的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页。
答案 0 :(得分:2)
没有必要触摸你的.htaccess - 你可以在WordPress中做你想做的一切!
答案 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]