Cod*_*ose 1 .htaccess mod-rewrite redirect file-exists subdirectory
我正在用 php 开发一个应用程序,我需要设置一个相当广泛的 .htaccess 重定向。我做了一些阅读并尝试自己编写 RewriteConds,但这有点高于我的薪水 - 我希望有更多经验的人可以提供帮助。这是我想要完成的:
www.example.com/app/. 不要重定向此目录上方的任何内容。/app/includes/*和/app/sb_pages/*。这将在未来发生变化和扩展,因此我需要一个包含所有现有文件的优雅解决方案。如果在找不到文件时在这些目录中触发重定向,那很好 - 我所关心的是能够在没有重定向触发的情况下访问其中的文件。/app/index.php,并在查询字符串中传递尾随 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]
Run Code Online (Sandbox Code Playgroud)
请注意,如果您希望对现有目录(而不是文件)的访问也不会被重定向,请RewriteCond %{REQUEST_FILENAME} !-d在规则上方添加一个。