htaccess重写为默认目录

时间:2011-09-20 07:47:13

标签: apache .htaccess

我遇到了htaccess的情况 - 堆栈中以前的解决方案似乎都没有帮助我,所以我正在写一个新的解决方案。这是问题所在:

我希望默认情况下会查看所有请求http://www.example.com/folder/public_html/,如果请求的资源不存在于该文件夹中,请求应该路由到http://www.example.com/index.php

实施例: 我发出了http://www.example.com/example.php的请求,所以默认情况下,服务器应该查看/folder/public_html/example.php,如果文件不在那里,那么它应该通过站点根目录中的索引文件进行路由,即{{ 1}}

请帮助,我被困住了

1 个答案:

答案 0 :(得分:1)

在目录http://www.example.com/

中使用此规则创建.htaccess
RewriteEngine on
RewriteRule ^(.*)$ /folder/public_html/$1 [L]

http://www.example.com/folder/public_html/

中有一个.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?request=$1 [R]

(如果您只想显示/index.php?request=example.php但不希望浏览器重定向,请使用[L]而不是[R])

修改

如果文件存在重定向到/folder/public_html/file.php,请在第二行.htaccess中添加以下行:

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ $1 [R]

默认情况下文件/folder/public_html/file.php会因为第一个.htaccess中的重写规则而存在,但浏览器不会重定向