【问题标题】:Worpress htaccess rewrite rule for single URL单个 URL 的 Wordpress htaccess 重写规则
【发布时间】:2020-11-25 11:28:18
【问题描述】:

我有问题。我们使用 Wordpress,我们需要重写一些 URL。不是全部!这只是暂时的。

基本的 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>

# END WordPress

我们现在需要一个重写规则来简化一条长路径:

/汽车/火车/自行车/人类/轮胎/

应该是:

/所有轮胎/

我认为这会起作用,但遗憾的是它没有。

RewriteRule /all-tires/$ /car/train/bike/human/tires/

我们不想重定向(301),我们只是想简化一个长路径,以便用户在他的地址栏中看到一个短路径。

有人可以帮忙吗?

谢谢! 爱拍

【问题讨论】:

  • 在 .htaccess 上下文中配置时,与 never 匹配的路径段 RewriteRule 以 / 开头,此时已被剥离。
  • (当然,整个事情必须放在 默认 WP 路由之前。)
  • 嗨@Cbroe,我不太明白。我试过:把重写规则放在不启动/在RewriteEngine On之后。不工作。或者它的外观如何?
  • 基本上应该是这样的。在规则末尾添加[R=302],然后查看是否会强制外部重定向到该地址。如果是这样,那么规则本身就起作用了——剩下的问题可能出在 WordPress 本身上。
  • 即使是 [302] 也不会改变任何东西。还是不行。当我采用相同的规则、相同的页面并使用 all-tires.php$ readme.html 时,它会运行。我也试过/car/train/bike/human/tires/index.php,它在地址栏中有效,但在htaccess中无效?

标签: wordpress .htaccess url mod-rewrite


【解决方案1】:

正如 CBroe 所提到的,您必须将它放在常规的 wordpress 路由之上。像这样的东西,请记住这是重定向而不是重写。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
Rewriterule all-tires/$ /car/train/bike/human/tires/ [QSA,L,R=302]
</IfModule>

# BEGIN WordPress
# The directives (lines) between `BEGIN WordPress` and `END WordPress` are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2011-12-06
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多