【问题标题】:Rewriting query string with htaccess without conflicting with WordPress使用 htaccess 重写查询字符串而不与 WordPress 冲突
【发布时间】:2013-04-24 11:14:51
【问题描述】:

我已经设置了重写规则 =

RewriteRule ^names/([a-zA-Z0-9_]+|)(-in-|)([a-zA-Z0-9_]+|)(-|)([a-zA-Z0-9_]+|)(-|)([0-9]+|)/?$ query.php?sector=$1&location=$3&firmname=$5&firmnumber=$7

按预期工作,即在输入 /names/something_else-in-somewhere-somename-100 时 它将这些变量值传递给 query.php 页面。

这是在使用 WordPress 的网站上构建的,我遇到了似乎默认的 WordPress htaccess 规则的问题,阻止我在没有 /names/ 的情况下使用上面的重写规则 - 因为我只想将查询字符串作为 url。

但是,如果我从重写规则中删除 ^names/,它将阻止 WordPress 页面的可访问性。我已将我的重写代码放在 htaccess 文档的顶部,如下所示:

RewriteEngine On
RewriteBase /
RewriteRule ^names/([a-zA-Z0-9_]+|)(-in-|)([a-zA-Z0-9_]+|)(-|)([a-zA-Z0-9_]+|)(-|)([0-9]+|)/?$ query.php?sector=$1&location=$3&firmname=$5&firmnumber=$7 
ErrorDocument 404 /404.php 
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress

如果我将重写规则置于 WordPress 规则之下,它将停止一起工作。任何人都可以解释为什么会这样并指出我解决这个问题的正确方向吗?

【问题讨论】:

    标签: string wordpress .htaccess mod-rewrite


    【解决方案1】:

    试试这个。在 WP htaccess 的最后一行之后再添加一个 RewriteBase

    RewriteBase /names/
    RewriteRule ^names/([a-zA-Z0-9_]+|)(-in-|)([a-zA-Z0-9_]+|)(-|)([a-zA-Z0-9_]+|)(-|)([0-9]+|)/?$ query.php?sector=$1&location=$3&firmname=$5&firmnumber=$7
    

    【讨论】:

    • 谢谢 Marcelo - 虽然我后来发现了其他问题(与 WordPress 有进一步冲突的问题),但这种方法有所帮助,但后来开发了另一种解决方案,使用类似的 htaccess 重写和重定向以及 php 文件更好地减少和压缩 URL。
    【解决方案2】:

    您必须使用[L] 来标记您的规则的结束。将您的规则更改为:

    RewriteRule ^names/([a-zA-Z0-9_]+|)(-in-|)([a-zA-Z0-9_]+|)(-|)([a-zA-Z0-9_]+|)(-|)([0-9]+|)/?$ query.php?sector=$1&location=$3&firmname=$5&firmnumber=$7 [L,QSA,NC]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      相关资源
      最近更新 更多