在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的根目录)
答案 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中的永久链接,那么该行将会被覆盖。