我必须将诸如“example.com/example/(justsometext)/id-123“之类的url重定向到诸如“example.com/example/id-123“之类的更优雅的URL中,所以我想去掉括号。我怎样才能做到这一点呢?谢谢!罗马诺我到处寻找答案,但没有找到任何合适的解决办法。
example.com/example/(justsometext)/id-123
example.com/example/id-123
zi8p0yeb1#
您可以使用mod_rewrite在.htaccess根文件顶部附近执行类似以下操作:
.htaccess
RewriteEngine On RewriteRule ^(.+)/\([^/]+\)(.*) /$1$2 [R=302,L]
(You如果文件后面已经出现了RewriteEngine指令,我就不需要重复它了。)请注意,为了匹配正则表达式中的文字括号,它们被反斜杠转义以否定它们的特殊含义(作为 * 组 * 分隔符),即分别为\(和\)。反向引用$1和$2包含要删除的部分周围的URL路径部分。例如,$1包含括号部分前面的斜线(但不包括斜线)之前的所有内容。然而,这确实做出了各种假设:
RewriteEngine
\(
\)
$1
$2
(justsometext)
/example/(justsometext)
justsometext
1条答案
按热度按时间zi8p0yeb1#
您可以使用mod_rewrite在
.htaccess
根文件顶部附近执行类似以下操作:(You如果文件后面已经出现了
RewriteEngine
指令,我就不需要重复它了。)请注意,为了匹配正则表达式中的文字括号,它们被反斜杠转义以否定它们的特殊含义(作为 * 组 * 分隔符),即分别为
\(
和\)
。反向引用
$1
和$2
包含要删除的部分周围的URL路径部分。例如,$1
包含括号部分前面的斜线(但不包括斜线)之前的所有内容。然而,这确实做出了各种假设:
(justsometext)
的路径段)* 之前 * 总是至少有一个路径段。这满足了您的示例:/example/(justsometext)
.justsometext
可以是括在文字括号中的任何字符,但其他斜杠除外。(justsometext)
占据了一个完整的路径段,并以斜杠作为前缀。