.htaccess 文件重写超出应有的范围

.htaccess file rewriting more than it should

我的 PHP 应用程序中的 .htaccess 文件应该将所有请求从 example.com/playlists/[ID] 重定向到 example.com/playlists/display.php?id=[ID],但 .htaccess 文件也会影响其他文件。 .htaccess 系统将 /?id=edit 附加到 example.com/playlists/edit 的末尾,这会影响页面的显示方式。

我的目录结构:

Playlists
|-- index.php
`-- playlists
    |-- index.php
    |-- display.php <----------------[ THIS FILE TAKES THE .HTACCESS REDIRECTED REQUESTS ]----------------
    |-- .htaccess <----------------[ THIS IS THE PROBLEM FILE ]-------------------
    `-- edit
        `-- index.php

我的 .htaccess 文件:

RewriteEngine On
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^([a-zA-Z0-9_\-\+]+)$ display.php?id=

我想要重定向的任何 URL 的唯一部分是 example.com/playlists/ 之后的部分,仅此而已,确保规则不会应用于任何其他内容并且不会覆盖任何现有目录或文件。

URL example.com/playlists/foobar 已经成功重写为 example.com/playlists/display.php?id=foobar

大家有什么想法或建议吗?

您的 .htaccess 文件正在将编辑作为 display.php 的 ID。

您需要先明确指定要编辑到文件夹中,否则使用原来的规则。

您可以将文件夹移动到根目录并使用:

RewriteRule ^edit/?$ edit/index.php [L]
RewriteRule ^([A-Za-z0-9_\-\+]+)/?$ display.php?id= [L]