【问题标题】:WP - Adding Custom Rewrite RuleWP - 添加自定义重写规则
【发布时间】:2015-05-05 22:05:59
【问题描述】:

我正在尝试为我的 WP 网站添加自定义重写规则,因此 http://example.com/?u=sample-output 被重写为 http://example.com/sample-output

我要添加的重写规则是:

RewriteEngine On
RewriteRule ^([^/]*)$ /?u=$1 [L]

现有的重写规则是:

RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

当我添加它时,当我访问该页面时它给了我一个 404 错误。我猜这是因为冲突。任何有关如何解决此问题的建议将不胜感激。

【问题讨论】:

  • WP 规则将所有内容重写为 index.php,现在您基本上是在尝试用新规则做同样的事情。你不能两者都做。您要重写的是一个查询字符串还是什么?
  • @PanamaJack 目标是将查询字符串重写为 example.com/query-string。也许我们可以更改 WP 设置,以便其他页面转到 example.com/pages/?
  • 是所有的查询字符串还是只有一个?
  • @PanamaJack 就是那个
  • 真的没有办法告诉你是要重写查询字符串还是 WP 规则。所以你可能需要把 WP 放在一个子文件夹中。

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


【解决方案1】:

根据您的 cmets,将规则放在 WP 规则之上,然后您可以执行类似的操作。并且所有将转到查询字符串的 URL 都必须在其中使用 /start/。然后确保在 WP 规则中忽略/start/,如下所示。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^start/([^/]+)/?$ /?u=$1 [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/start [NC]
RewriteRule . /index.php [L]

【讨论】:

  • 当我添加它时,它会将我从 example.com/start/query-string 重定向到 example.com/query-string,这不应该发生。有什么想法吗?
  • 除此之外,您的 htaccess 文件中还有其他规则吗?
  • 不,仅此而已
猜你喜欢
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多