.htaccess htaccess规则-取代符号链接文件
我正在从事这个遗留项目,它有一个非常奇怪的设置,我希望摆脱它,但我的htaccess技能在这个部门有点缺乏 这是目录结构.htaccess htaccess规则-取代符号链接文件,.htaccess,.htaccess,我正在从事这个遗留项目,它有一个非常奇怪的设置,我希望摆脱它,但我的htaccess技能在这个部门有点缺乏 这是目录结构 /index.php /www page1.php -> symlink to index.php page2.php -> symlink to index.php page3.php -> symlink to index.php /www是公共目录,人们可以访问http://site/page1.php。但是,每个带有*的文件实际上都链接
/index.php
/www
page1.php -> symlink to index.php
page2.php -> symlink to index.php
page3.php -> symlink to index.php
/www是公共目录,人们可以访问http://site/page1.php
。但是,每个带有*的文件实际上都链接到/index.php
我觉得这种安排很愚蠢,我想去掉符号链接,让任何/www/*.php请求直接指向index.php,而不让页面实际重定向到index.php
有没有关于htaccess规则的想法可以解决这个问题?最基本的核心是,我希望保留相同的功能,而不必有上千个符号链接的文件。看起来
index.php
文件不在您的文档根目录中(我假设它是www
),因此,我认为没有办法从.htaccess文件中执行此操作。为了访问文档根目录以外的内容,您需要在服务器配置或vhost配置中设置别名:
# 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>
当您请求http://site/page1.php,浏览器的地址栏不变,但服务器实际提供的是/index.php
,别名为/var/www/path/to/index.php
如果需要,可以将正则表达式
^(.*)\.php$
调整为更合适的形式。这只匹配以.php
结尾的任何内容,包括/blah/bleh/foo/bar/somethingsomething.php
。如果您想限制目录深度,可以将正则表达式调整为^([^/]+)\.php$
,等等。看起来index.php
文件不在您的文档根目录中(我假设是www
),因此,我认为没有办法从.htaccess文件执行此操作。为了访问文档根目录以外的内容,您需要在服务器配置或vhost配置中设置别名:
# 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>
当您请求http://site/page1.php,浏览器的地址栏不变,但服务器实际提供的是/index.php
,别名为/var/www/path/to/index.php
如果需要,可以将正则表达式^(.*)\.php$
调整为更合适的形式。这只匹配以.php
结尾的任何内容,包括/blah/bleh/foo/bar/somethingsomething.php
。如果要限制目录深度,可以将正则表达式调整为^([^/]+)\.php$
,等等