重写规则:将 URL 中的一部分文本更改为另一部分

Rewrite rule: change a portion of text in URL to another

我想更改我的 wordpress 的 url,我读到我可以使用重写规则来实现它,但不幸的是它对我不起作用。详情如下:

我有一个 wordpress 主题,这让我很喜欢 URL:

www.my-theme.pl/portfolio_category/red-flower/
www.my-theme.pl/portfolio_category/blue-flower/
www.my-theme.pl/portfolio_category/black-trees/
www.my-theme.pl/portfolio_category/white-roses/

我想通过 .htaccess 重写 URL 以接收: www.my-主题.pl/gardens/red-flower/

如您所见,我只想将 URL 中的 /portfolio_category/ 替换为 /gardens/ 文本,因为之后是不同的 post 名称,但 /portfolio_category/ 始终保持不变。

我输入了这条规则:

RewriteRule ^/portfolio_category/$ /gardens/$ [NC]

不幸的是,它不起作用。你能解释一下如何正确使用吗? 下面是我的整个 .htaccess 代码:

Options -Indexes
AuthType Basic
AuthName "password"
AuthUserFile /home/*******************/.htpasswd
Require valid-user

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

</IfModule>
# END WordPress

******* 替换为我的 htpasswd 的工作路径。 这是我第一次进行任何重写更改,我不熟悉它。我想我已经正确阅读了教程,但更改仍然无效。

来自波兰的问候, 亚采克

如果我理解正确的话,你的重写规则是相反的,你不包括以下目录。尝试:

RewriteRule ^/gardens/(.*)$ /portfolio_category/ [NC]

这会将 /gardens/ 更改为 /portfolio_category/。 (.*)$ 将所有内容收集到 URL 的末尾,然后 $1 将其添加到新的末尾。

谢谢 bodye 先生,我想我的问题已经解决了,我只需要将更改编码到我的主题中以通过主题引擎获得不同的 URL 所以 URL 是正确的无需重写即可开始。