我遇到以下问题: 我想构建一个在每个目录中都能运行的脚本,无论是根目录还是子目录。所以最重要的是,我有一个.htaccess文件,将所有请求重定向到安装脚本的目录中的index.php 。重定向很简单,有很多教程。但问题是我不知道脚本的安装路径。我不知道它是子目录还是根目录。我看到的唯一解决方案是创建一个install.php,它将使用正确的路径修改htaccess。但是有更好的解决方案吗?
谢谢!
更新: 由于我的问题显然存在误解,我将举一个例子。假设我的项目只包含一个index.php和一个.htaccess文件。 .htaccess文件应将所有请求重定向到index.php。这很简单,但是 .htaccess文件不知道它将在哪个目录中调用,所以可能是用户在/ xyz /中安装了项目,但也在根目录/中。如果我请求xyz / abc / 123 / echo / world / .htaccess-file不知道index.php在哪个目录中用于重定向,它只知道它应该重定向到root的index.php的脚本。所以我的解决方案是创建一个install.php并使用正确的路径更改.htaccess文件,但是没有更好的解决方案吗?
答案 0 :(得分:1)
将此规则放在根目录中.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?/)?[^/]+$ /$1/index.php [L]
这会将每个不是有效文件/目录的请求重写到该子目录的index.php
。
编辑:如果您想将其放在/anydir/
中,请使用:
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . %{ENV:BASE}index.php [L]