php - .htaccess 将所有子文件夹内容(有和没有结尾斜杠)重定向到同一个子文件夹

标签 php apache .htaccess mod-rewrite redirect

我想重定向以下 URL:

/gallery/image-1/
/gallery/image-1
/gallery/image-2/
/gallery/image-2

/gallery/,但它比乍看起来更难。这是来自 .htaccess:

RewriteEngine On
RewriteRule ^gallery/(.*) /gallery/ [R=301,L,NC]

所有 URL 最初都重定向到 /gallery/,但随后它只是继续加载,显然这个 URL 也在 ^gallery/(.*) 下,所以它不断重定向到相同的 URL。几秒钟后,浏览器给我一条 ERR_TOO_MANY_REDIRECTS 消息。

如何编辑 ^gallery/(.*) 语句以仅覆盖 /gallery/ URL 之后的 URL?

最佳答案

您应该在正则表达式中使用 .+ 而不是 .* 以确保在 URI 为 /gallery/ 时停止重定向:

RewriteEngine On

RewriteRule ^(gallery)/.+$ /$1/ [R=301,L,NC]

关于php - .htaccess 将所有子文件夹内容(有和没有结尾斜杠)重定向到同一个子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32063341/

相关文章:

php - 从 C 应用程序到 php 的实时视频流

php - Centos 中的符号链接(symbolic link)

php - 如何通过 htaccess 在 url 中允许 1-9 a-z A-Z - _ %?

linux - 值未传递给 $1 - .htaccess

Android 的 PHP 套接字

php从数据库加载图像(pdf)

php - 使用按钮从表中删除数据行

linux - 无法使用来自 Gitolite 服务器的 HTTP 克隆存储库

python - 在 Windows 上使用 Python 2.6 的 mod_python

php - htaccess 如何不重写某些 URL