通过.htaccess将子目录中的文件映射到根文件夹

时间:2011-10-27 04:13:28

标签: .htaccess mod-rewrite apache2

我在子目录中有大量文件。我想将这些文件映射到根目录,以便“http://www.mysite.com/filename”的请求实际上指向“http://www.mysite.com/subfolder/filename.php”服务器。我想删除对子文件夹的引用。

请注意,我还想在htaccess文件中附加“php”后缀。我在根目录中也有相对大量的文件(包括About,Contact等)以及其他几个文件夹,因此Rewrite Base不是一个可行的选项。

理想情况下,对于每个请求,我会测试文件是否存在于根文件夹中,如果不存在,则映射到子文件夹。我尝试了以下但无法将文件映射到子文件夹,更不用说检查它是否存在。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
# works fine if not commented:
# RewriteRule ^(.*)$ $1.php
# try pointing to subfolder instead does not work
RewriteRule ^(.*)$ folder/$1.php

感谢您的任何建议。 B计划只是将文件夹名称保留在URL中,但我很高兴找到更优雅的解决方案和更短,更直接的URL。

1 个答案:

答案 0 :(得分:1)

第二次重写条件不起作用,因为你没有查看“文件夹”,尝试这样的事情:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/folder%{REQUEST_URI}.php -f
RewriteRule ^(.*)$ folder/$1.php

如果您的文档根目录是/htdocs,那么当我认为您想要检查/htdocs/filename.php是否存在时,您正在检查文件/htdocs/folder/filename.php是否存在。