将 URL 重写规则添加到 Wordpress
Posted
技术标签:
【中文标题】将 URL 重写规则添加到 Wordpress【英文标题】:Add URL Rewrite Rule To Wordpress 【发布时间】:2012-01-18 14:02:23 【问题描述】:我编写了一个 Wordpress 插件,可以将查询字符串添加到 URL。但是我似乎无法修改 htaccess 来重写它。不确定 Wordpress 是否会覆盖它?
当前的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
我要重写的 URL 是:
http://domain.com/deal-info/?id=87&post_name=testdealtitle
所需网址:
http://domain.com/deal-info/87/testdealtitle
我已经尝试添加:
RewriteRule ^([^/]*)/([^/]*)$ /deal-info/?id=$1&post_name=$2 [L]
无济于事。任何想法表示赞赏!
【问题讨论】:
哪个应用程序处理这个请求http://domain.com/deal-info/87/testdealtitle
:是WordPress index.php
还是其他一些php 文件?
【参考方案1】:
当你这样做时:
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
这意味着:“如果它不是一个文件,如果它不是一个目录,则将 all 传入的 URL 重定向到
index.php
。
你的重写器应该可以工作......除非你把它放在之前的重写器之后。所以,简而言之,你确定你的 .htaccess 是这样的吗:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]*)/([^/]*)$ /deal-info/?id=$1&post_name=$2 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
</IfModule>
请告诉我它是否有效。
此外,如果您只想重定向 only 交易信息,您应该执行以下操作(未测试):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(/)?deal-info/([^/]*)/([^/]*)$ /deal-info/?id=$2&post_name=$3 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
</IfModule>
两个提示:
请尝试使用RewriteLog
指令:它可以帮助您追踪此类问题:
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
我最喜欢的检查正则表达式的工具:
http://www.quanetic.com/Regex(别忘了选择 ereg(POSIX) 而不是 preg(PCRE)!)
我可以请你在你的问题中添加重写日志吗?
【讨论】:
你这个摇滚伙伴。我不知道我今天读了多少“解释”;) 在 Wordpress 中只有一个警告,.htaccess 文件可以用 PHP 重写,您可能会丢失您的更改,请改用 rewrite api...祝您好运【参考方案2】:经过一番困惑,我在这里找到了答案: https://wordpress.stackexchange.com/questions/5413/need-help-with-add-rewrite-rule
虽然我认为正确的方法是: http://codex.wordpress.org/Rewrite_API/add_rewrite_rule
我不确定您是否可以直接在 htaccess 中执行此操作,或者我与正在使用的另一个插件有冲突问题。
再次感谢 Olivier 的广泛回答!
【讨论】:
以上是关于将 URL 重写规则添加到 Wordpress的主要内容,如果未能解决你的问题,请参考以下文章
Blazor WebAssembly - 如何在自动生成的 web.config 中添加“http 到 https”URL 重写规则