wordpress重写问题 - 404

时间:2013-09-16 08:41:31

标签: php wordpress .htaccess url-rewriting

我遇到了wordpress的问题,试图重写一个简单的url模式以满足我的需求。

寻找:

How can I rewrite: localhost/projects/55/1 into index.php?page_id=X&proID=55&subID=1 ? without getting a 404 ?

到目前为止我尝试了什么:

直接修改.htaccess:不起作用。然后我读了一些样本并通过在init-hook上调用wordpress函数add_rewrite_rule()来尝试它。这是我目前的代码:

add_action('init', 'add_rewrite_rules');
function add_rewrite_rules() {
  add_rewrite_rule('^projects/([^/]*)/?([^/]*)?/?','index.php?page_id=8&proID=$matches[1]&subID=$matches[2]','top');
}

有人可以帮我这个吗?

编辑1: 参考:http://codex.wordpress.org/Rewrite_API/add_rewrite_rule

编辑2:

好的,更好。现在我不再得到404了。但遗憾的是它仍然没有用(也许我做错了)。

echo '<pre>'; var_dump($_REQUEST); var_dump(get_query_var('proID')); var_dump(get_query_var('subID')); echo '</pre>';

结果:

array(0) {
}
string(0) ""
string(0) ""

有一个页面重新加载,因此它会指向localhost/projects

萤火虫: URL: http://10.0.0.109:8888/projects/25/2 Status: 301 Moved Permanently Domain: 10.0.0.109:8888 Size: 3.1 KB RemoteIP: 10.0.0.109:8888

htaccess文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# Custom rule
RewriteRule ^projects/([0-9]+)/?([0-9]+)?/?$ /index.php?page_id=8&proID=$1&subID=$2 [L,QSA]

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

祝你好运

2 个答案:

答案 0 :(得分:0)

您可以再次尝试htaccess文件。您需要确保将此规则置于可能已存在的wordpress规则之上:

RewriteRule ^projects/([0-9]+)/([0-9]+)/?$ /index.php?page_id=8&proID=$1&subID=$2 [L,QSA]

答案 1 :(得分:0)

尝试下面的代码。它可能会解决您的问题。我不确定。

add_action('init', 'add_rewrite_rules');
function add_rewrite_rules() {
  add_rewrite_rule('^projects/([^/]*)/?([^/]*)?/?','index.php?page_id=8&proID=$matches[1]&subID=$matches[2]','top');
  flush_rewrite_rules();
}