【问题标题】:Integrating Wordpress and Custom URL Rewrites集成 Wordpress 和自定义 URL 重写
【发布时间】:2012-07-10 05:45:00
【问题描述】:

我正在使用 Wordpress 3.4.1 并打开了永久链接。在我的 .htaccess 中,我有以下代码:

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

我还想设置自定义重写(不是重定向),以便当用户访问此 URL 时:

http://example.com/about/video-center/youtubeID/title-slug/

它在内部被重写为:

http://example.com/about/video-center/

现在,第一个 URL 404s。


我尝试在 RewriteBase / 行之后将此规则添加到我的 .htaccess 中:

RewriteRule ^about/video-center/(.+)$ /about/video-center/ [NC,L]

什么都不做(我仍然得到 404)。如果我在标志中添加R,那么它会重定向并且 /about/video-center/ 加载得很好,这让我相信规则匹配并正确重写。


我的理论是重写工作正常...但是当 WP 的重写规则生效时,我拥有的任何自定义重写规则都会被覆盖——即使它在内部重写,WP 仍在尝试处理位于地址栏。

我不知道如何解决这个问题并让我的自定义重写与 Wordpress 一起工作。

现在,我意识到单独使用 .htaccess 可能无法实现我想要的结果,并且可能需要一个插件或主题的 functions.php 中的一些自定义代码来解决这个问题。我愿意接受任何解决方案。

【问题讨论】:

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


    【解决方案1】:

    This 看起来很有希望。 (来自 WP 的文档)查看第一个示例 - 您可以跳过添加查询变量,因为您正在寻找的重写似乎更简单。

    但是,ID / url-slug 会发生什么?不再需要该信息?

    【讨论】:

    • URL 的 ID/Slug 部分被浏览器中的 Javascript 使用。对于视频部分,我想使用 History.js 将状态推送到浏览器而不是重新加载页面 - 但我希望允许用户按照上面的结构永久链接到特定的“页面” - 我正在尝试做这没有查询字符串或哈希。该链接的第一个示例重定向到 /about/video-center/ 这不是我想要的。
    【解决方案2】:

    花了太多时间试图找到解决方案,我只打算使用散列代替:

    http://example.com/about/video-center/#youtubeID/title-slug/

    【讨论】:

    • 如果有人碰巧找到解决此问题的解决方案,我将更改接受的答案。
    猜你喜欢
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多