【问题标题】:rewrite 2 url parameters as directories将 2 个 url 参数重写为目录
【发布时间】:2018-12-04 23:55:50
【问题描述】:

我有一个 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

【问题讨论】:

  • 目前,URL 没有被重写。它只是向我显示 URL 参数
  • 嗨,本。我已经为您的问题提供了有效的解决方案以及测试人员。如果有任何问题,请发表评论,或者如果这解决了您的问题,请接受答案,以便其他 SO 用户可以从中受益。

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


【解决方案1】:

你可以有下面的重写规则

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&amp;title=Testing 重定向到http://example.com/video/264243188/Testing

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

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

Tester link

【讨论】:

  • 很遗憾,这不起作用。 immaculate.co.uk/video?id=264243188&title=Testing
  • 我也试过:#RewriteRule ^video/([^/]*)/([^/]*)$ /video?id=$1&title=$2 [L]
  • 尝试在 url 中添加 http 。测试工具的功能有限,因为它显示它不起作用,但在实际用例中它会起作用
  • 添加 http 或 https 仍然不能解决问题。这可能是 WordPress 的冲突吗?
  • 使用包含 /video 的重写规则更新了规则。还更新了测试仪
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
  • 2013-07-16
相关资源
最近更新 更多