【问题标题】:mod_rewrite in Wordpress installation to replace multiple keys/variables在 Wordpress 安装中使用 mod_rewrite 替换多个键/变量
【发布时间】:2014-10-05 19:54:34
【问题描述】:

我正在尝试创建 mod_rewrite 规则以在我的 wordpress 网站中重定向以下网址:

www.mywebsite.com/pg/2/row/20/filter/all/filtercity/foo,bar

www.mywebsite.com/detail?pg=2&row=20&filter=all&filtercity=foo,bar

我的问题是 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

我尝试了以下 RewriteRule,如果我从 Wordpress 中评论最后一个 RewrireRule,它会起作用。

# 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]]
RewriteRule ^pg/([a-zA-Z0-9]+)/?$ ?pg=$2 [R]
</IfModule>

# END WordPress

以上仅适用于类似的网址

www.mywebsite.com/pg/2 => www.mywebsite.com?pg=2

几个问题:

1 - 如何配置 .htaccess 以仅在找到以下键时处理 url

/pg 和/或 /row 和/或 /filter 和/或 /filtercity

对于所有其他 url,它应该执行标准的 Wordpress RewriteRule 。 /index.php

2 - url 也可以包含所有键或仅其中几个键。例如:

/pg/2/row/20

/行/20/过滤器/全部

如何配置 .htaccess 来处理所有不同的键组合?

3 - 当我尝试替换时

RewriteRule ^pg/([a-zA-Z0-9]+)/?$ ?pg=$2 [R]

RewriteRule ^pg/([a-zA-Z0-9]+)/?$ detail?pg=$1 [R]

我收到来自服务器的 404 错误。不知道为什么。有什么想法吗?

谢谢。

编辑 1:

我尝试将 [L] 添加到 RewriteRule 的末尾(见下文)

RewriteRule ^pg/([a-zA-Z0-9]+)/?$ ?pg=$1 [R,L]

并将标准 Wordpress 重写规则移至下一行

RewriteRule . /index.php [L]

这样做之后,我不再收到服务器 404 错误。但是 CSS 文件会停止加载。

【问题讨论】:

    标签: php wordpress .htaccess mod-rewrite


    【解决方案1】:

    1 - 我如何配置 .htaccess 以仅在处理 url 时 找到以下键

    /pg 和/或 /row 和/或 /filter 和/或 /filtercity

    阅读此Rewrite URL with .htaccess for multiple parameters

    上面的答案可以帮助您在具有标准 url 格式时解决您的问题。

    2 - url 也可以包含所有键或仅其中几个键。为了 示例:

    /pg/2/row/20

    /行/20/过滤器/全部

    您正试图做一些超出 URL 语义的事情。当您尝试访问资源时,每次的路径都应该相同。如果您在起始页上,则可以传递 pg/0/。但是谁能阻止你脱离 URL 语义呢? :) 在这种情况下,您必须将所有组合作为 .htaccess 中的规则。按照上述解决方案,所有 URL 组合都可以使用。

    我的建议:

    • 如果您不熟悉 .htaccess,并且您只需要 URL 重写(虽然它很强大),请不要使用 .htaccess
    • 将所有内容传递给索引文件并在您的代码中解析,对于您的情况,请查看此页面http://codex.wordpress.org/Query_Overview

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多