.htaccess htaccess-重定向子目录中的所有请求,除非请求的文件存在

.htaccess htaccess-重定向子目录中的所有请求,除非请求的文件存在,.htaccess,mod-rewrite,redirect,subdirectory,file-exists,.htaccess,Mod Rewrite,Redirect,Subdirectory,File Exists,我正在用php开发一个应用程序,我需要设置一个相当广泛的.htaccess重定向。我读了一些书,并试图自己写重写,但这比我的工资等级高了一点——我希望有更多经验的人能帮我。以下是我试图实现的目标: 该应用程序包含在www.example.com/app/中。不要重定向此目录上方的任何内容。 此目录中存在一些需要访问的文件。目前这些是/app/includes/*和/app/sb_页面/*。这将在将来更改和扩展,因此我需要一个包含所有现有文件的优雅解决方案。如果在找不到文件的情况下在这些目录中触发

我正在用php开发一个应用程序,我需要设置一个相当广泛的.htaccess重定向。我读了一些书,并试图自己写重写,但这比我的工资等级高了一点——我希望有更多经验的人能帮我。以下是我试图实现的目标:

该应用程序包含在www.example.com/app/中。不要重定向此目录上方的任何内容。 此目录中存在一些需要访问的文件。目前这些是/app/includes/*和/app/sb_页面/*。这将在将来更改和扩展,因此我需要一个包含所有现有文件的优雅解决方案。如果在找不到文件的情况下在这些目录中触发重定向,那也没关系——我所关心的只是能够在不触发重定向的情况下访问这些目录中的文件。 所有其他请求都应重定向到/app/index.php,并在querystring中传递尾部url。例如,对/app/path1/path2/的请求应该重定向到/app/index.php?path=path1/path2/ 重定向不应该是透明的。当用户请求/app/path1/path2/时,我希望他们相信他们一直在那里。他们不应该看到url更改为/app/index.php?path=path1/path2/。 为了更清楚,这里有几个案例需要详细说明:

/app/includes/sidebar.php不应重定向。 /app/includes/nothing.html不存在-重定向正常 /app/path1/path2/应该重定向到/app/index.php?path=path1/path2/。用户仍应将其当前URL视为/app/path1/path2/。
我希望我已经解释清楚了,并且预先解决了大多数问题。如果您需要澄清,请随时询问。提前感谢您的帮助

尝试将其添加到文档根目录中的.htaccess文件中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^app/(.*)$ /app/index.php?path=$1 [L,QSA]

请注意,如果您希望对现有目录(而不是文件)的访问也不会被重定向,请添加RewriteCond%{REQUEST_FILENAME}-请尝试将其添加到文档根目录中的.htaccess文件中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^app/(.*)$ /app/index.php?path=$1 [L,QSA]

请注意,如果您希望对现有目录(而不是文件)的访问也不会被重定向,请添加RewriteCond%{REQUEST_FILENAME}-d高于规则。

那一定是我做错了-我试图将.htaccess写入/app,而不是根目录。很有魅力,谢谢!这一定是我做错了什么-我试图编写一个.htaccess来放入/app,而不是根目录。很有魅力,谢谢!