如何在wordpress中重写.htaccess中的url?

时间:2010-12-07 13:05:12

标签: wordpress .htaccess mod-rewrite url-rewriting

在wordpress中,我希望http://www.example.com/domain/12345/重定向到

http://www.example.com/page.php?a=domain&b=12345

.htaccess的默认设置如下,

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

我在IfModule结束时添加了另一个语句但没有工作

RewriteRule ^http://%{HTTP_HOST}%/(.*)/(.*)/$ page.php?a=$1&b=$2 [L,NC]

有什么不对吗? (.htaccess位于wordpress的根目录)

2 个答案:

答案 0 :(得分:2)

[L]表示如果条件匹配,这是应该处理的最后一条规则。

第一条规则匹配对index.php的请求并重定向到那里。

第二条规则匹配对其他任何不是现有文件名或目录的请求(使用这两个条件),然后重定向到index.php并停止处理。

在两个RewriteCond行之前放置RewriteRule将允许检查与正则表达式匹配的路径并重定向到page.php。你必须修改你的正则表达式继续使用WordPress永久链接重写,/(。)/(。)/规则太通用,几乎可以匹配。

答案 1 :(得分:1)

只是为了确定。在Wordpress中,您可以点击管理员中“设置”下的“永久链接”,并从那里完全控制您的网址。这将创建动态规则来管理重写。

如果出于其他原因需要这样做,请按照以下方式调整代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^http://%{HTTP_HOST}%/(.*)/(.*)/$ page.php?a=$1&b=$2 [L,NC]

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

如果你把rewriterule放在那里,并且你的htaccess文件可以被脚本写入,那么如果你稍后更新wp中的永久链接,那么该行将会被覆盖。