2011-09-20 102 views
1

我陷入了一个与htaccess的情况 - 堆栈中的以前的解决方案似乎没有帮助我,所以我正在写一个新的。这里的问题是:我希望所有的请求被默认看着http://www.example.com/folder/public_html/如果犯规存在该文件夹中所请求的资源,应该将请求路由到http://www.example.com/index.phphtaccess重写到默认目录

: 我把一个请求对于http://www.example.com/example.php,所以默认情况下,服务器应该考虑/folder/public_html/example.php,如果文件不存在,那么它应该通过在站点的根目录的索引文件被路由即/index.php?request=example.php

请帮帮忙,我非常坚持

回答

1

这一规则在目录http://www.example.com/

RewriteEngine on 
RewriteRule ^(.*)$ /folder/public_html/$1 [L] 

而且在http://www.example.com/folder/public_html/

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

用这个的.htaccess创建的.htaccess(如果你只想显示/index.php?request=example .PHP但不希望浏览器重定向,使用[L]而不是[R])

编辑:

如果你想重定向到如果/folder/public_html/file.php的文件存在,在第二的.htaccess加上这些行:

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

默认文件/文件夹/如果由于第一个.htaccess中的重写规则而存在public_html/file.php,但浏览器不会重定向