调整.htaccess规则适配跨目录index.php的URL隐式访问
解决方案
要实现将index.php迁移到public_html根目录,同时保留.htaccess在原位置并维持原有URL功能,你只需要修改.htaccess中的两处配置即可:
RewriteEngine on # 新增:指定目录访问时加载根目录的index.php DirectoryIndex /index.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f # 修改:将请求转发到根目录的index.php RewriteRule . /index.php [L]
配置说明
DirectoryIndex /index.php:当用户访问www.example.com/image/public/这个目录时,Apache默认会查找当前目录的索引文件(比如原有的index.php)。现在我们通过这个指令告诉服务器,直接去加载根目录(public_html/)下的index.php,完美替代了原来目录内的索引文件功能。RewriteRule . /index.php [L]:原来的规则是将非文件/非目录的请求转发到当前目录的index.php,现在我们把目标路径改成绝对路径/index.php,确保所有符合条件的请求都指向根目录的新文件位置。绝对路径基于服务器的DocumentRoot(也就是你的public_html目录),所以无论.htaccess在哪个子目录,这个路径都不会出错。- 保留原有的
RewriteCond规则:确保只有当请求的路径不是真实存在的文件或目录时才触发转发,避免影响你目录下已有的静态文件或子目录访问。
这样修改后,用户访问www.example.com/image/public/或者www.example.com/image/public/xxx这类路径时,都会正常指向根目录的index.php,完全维持原有功能。
内容的提问来源于stack exchange,提问作者Mani
相关产品推荐
相关产品推荐

