我正在使用php开发一个应用程序,我需要设置一个非常广泛的.htaccess重定向。我做了一些阅读,并尝试自己编写RewriteConds,但它比我的薪水高一点 - 我希望有更多经验的人可以提供帮助。这就是我想要完成的事情:
www.example.com/app/
中。请勿重定向此目录上方的任何内容。/app/includes/*
和/app/sb_pages/*
。这将在未来发生变化和扩展,因此我需要一个包含所有现有文件的优雅解决方案。如果在找不到文件时重定向在这些目录中触发,那就没关系了 - 我所关心的只是能够在没有重定向触发的情况下访问这些文件。/app/index.php
,并在查询字符串中传递尾随网址。例如,对/app/path1/path2/
的请求应重定向到/app/index.php?path=path1/path2/
/app/path1/path2/
时,我希望他们相信他们仍然留在那里。他们不应看到网址更改为/app/index.php?path=path1/path2/
。为了更清晰,这里有几个案例要详细说明:
/app/includes/sidebar.php
不应重定向。/app/includes/nothing.html
不存在 - 重定向正常/app/path1/path2/
应重定向到/app/index.php?path=path1/path2/
。用户仍应将其当前网址视为/app/path1/path2/
。我希望我已经清楚地解释了它并抢占了大多数问题。如果您需要澄清,请不要犹豫。在此先感谢您的帮助!
答案 0 :(得分:4)
尝试将其添加到文档根目录中的.htaccess文件中:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^app/(.*)$ /app/index.php?path=$1 [L,QSA]
请注意,如果您希望访问现有目录(而不是文件)也不会重定向,请在规则上方添加RewriteCond %{REQUEST_FILENAME} !-d
。