首页 > 解决方案 > 将 2 个 url 参数重写为目录

问题描述

我有一个 WordPress 网站,在一个页面上我们嵌入了动态 vimeo 视频。我们使用 2 个 url 参数来嵌入视频并设置页面标题。

我们想重写这个 url,使它看起来是目录而不是参数

当前网址: /video?id=264243188&title=Testing

所需网址: /video/264243188/Testing

当前的.htaccess:

 # BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_URI} /video [NC]
RewriteCond %{QUERY_STRING} id=(.*)&title=(.*)
RewriteRule (.*)  /video/%1/%2? [R=301,NE,L]

#RewriteEngine On
#RewriteRule ^video/([^/]*)/([^/]*)$ /video?id=$1&title=$2 [L]

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

</IfModule>
# END WordPress

标签: wordpress.htaccessmod-rewriteurl-rewriting

解决方案


您可以拥有以下重写规则

RewriteCond %{REQUEST_URI} /video [NC]
RewriteCond %{QUERY_STRING} id=(.*)&title=(.*)
RewriteRule (.*)  /video/%1/%2? [R=301,NE,L]

相同的工作示例在.htaccess tester

它重定向http://example.com/video?id=264243188&title=Testinghttp://example.com/video/264243188/Testing

如果您想将路径转换为查询字符串,您可以使用以下重写规则

RewriteRule ^video/([^/]+)/?([^/]+)/? video?id=$1&title=$2 [R=301,NE,L]

测试仪链接


推荐阅读