【发布时间】:2010-10-12 07:19:44
【问题描述】:
我的主题中有一个产品详细信息模板,用于根据 URL 处理不同产品的显示。
默认情况下,WordPress 将允许通过附加到 URL 的方式将数字传递给模板页面:product-details/3/
但是,我想使用 slug 使其对 SEO 更友好:product/sandals。然而,当我这样做时,WordPress 不再默认找到该页面。
我尝试了以下 ReWriteRule,但没有成功。
RewriteRule ^product/([\w\-]+)/?$ product-details/?slug=$1 [L]
如何将此自定义 slug 发送到模板。我希望将所有内容都保留在 WordPress 中,但我愿意添加 ReWriteRule。
【问题讨论】:
-
如何将 slug 发送到 Wordpress?换句话说,您需要 URL 的最终形式(如 Wordpress/模板所见)是什么?请注意,如果 Wordpress 只能接受数字,您将无法仅使用 mod_rewrite 将 slug 转换为数字。
-
@David 我知道我无法转换蛞蝓。我很高兴阅读来自
$_GET的 slug,正如尝试的 ReWriteRule 所暗示的那样 -
好的,只要确保你知道 ;-) 在这种情况下,我不确定发生了什么。您的重写规则似乎应该有效,假设您将它放在与您的 WP 安装的 URL 位置相对应的目录中的
.htaccess文件中。例如,如果产品页面可在例如example.com/store/product-details/3/确保将规则放入${DOCUMENT_ROOT}/store/.htaccess。您可能需要添加RewriteBase /store/,但我认为没有它应该可以工作。可以试试开启重写日志吗? -
您不能在
.htaccess文件中执行此操作,因为 Wordpress 有自己的“重写”系统。我不清楚您到底想做什么,但这个问题 (stackoverflow.com/questions/3307352/…) 或WP_Rewrite类 (codex.wordpress.org/Function_Reference/WP_Rewrite) 的文档可能会有所帮助。 -
@Richard,感谢您的参考 - 他们让我走上了正确的道路。 @David,如果我的页面在 WP 结构之外,这将是一个选项。但是,这些页面是主题的模板。
标签: wordpress mod-rewrite url-rewriting