看起来该index.php
文件不在您的文档根目录中(我假设是www
),因此,我认为您无法从 .htaccess 文件中执行此操作。为了访问文档根目录之外的内容,您需要在服务器配置或虚拟主机配置中设置别名:
# Somewhere in vhost/server config
Alias /index.php /var/www/path/to/index.php
# We need to make sure this path is allowed to be served by apache, otherwise
# you will always get "403 Forbidden" if you try to access "/index.php"
<Directory "/var/www/path/to">
Options None
Order allow,deny
Allow from all
</Directory>
现在您应该可以访问/var/www/path/to/index.php
. 请注意,/var/www/path/to 目录中的其他文件是安全的,只要您不创建指向它们的Alias
(或AliasMatch
或)。ScriptAlias
现在您可以通过URI 访问index.php/index.php
,您可以在文档根目录 (www) 的 .htaccess 文件中设置一些 mod_rewrite 规则,以将内容指向 index.php:
# Turn on the rewrite engine
RewriteEngine On
# Only apply the rule to URI's that don't map to an existing file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all requests ending with ".php" to "/index.php"
RewriteRule ^(.*)\.php$ /index.php [L]
这将使得当您请求http://site/page1.php/index.php
时,浏览器的地址栏不变,但服务器实际提供/var/www/path/to/index.php
.
如果需要,您可以将正则表达式调整为^(.*)\.php$
更合适的内容。这仅匹配以 a 结尾的任何内容.php
,包括/blah/bleh/foo/bar/somethingsomething.php
. 如果要限制目录深度,可以将正则表达式调整为^([^/]+)\.php$
等。