RewriteRule删除所有斜杠

时间:2014-02-22 00:26:44

标签: apache .htaccess mod-rewrite

您好我已经尝试了一切,但找不到解决方案。 当用户访问此URL

我希望它将其重写为(不使用重定向)

如何删除'/'? 非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

尝试使用此规则(您的htaccess必须位于文档根文件夹中)

RewriteCond %{QUERY_STRING} ^pid=([0-9]+)$
RewriteRule ^/?([^/]+)/([^/]+)/([^/]+)/([^/]+)\.jpg$ /$1$2$3$4.jpg?pid=%1 [L]

编辑:此代码仅适用于您的示例中的网址(在查询字符串中有3个斜杠和pid

EDIT2:如果你有多个参数(可能是不同的顺序)来简化查询字符串我们不再需要RewriteCond而是QSA标志而不是

RewriteRule ^/?([^/]+)/([^/]+)/([^/]+)/([^/]+)\.jpg$ /$1$2$3$4.jpg [L,QSA]

答案 1 :(得分:1)

如果该规则应删除任意数量的斜杠,而不仅仅是固定数字,则必须创建一个循环。为此,您可以使用\[N\] flag,这将导致重写过程从当前URL开始。这样做时要小心,如果做错了,可能会导致无限循环;)

RewriteRule ^/?(.*)/(.*) $1$2 [N]

应该工作。您可以对其进行测试with this online tool

[编辑]:完全重写 - 我忘记了[N]旗帜;)