我遇到了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}}
请帮助,我被困住了
答案 0 :(得分: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]
(如果您只想显示/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中的重写规则而存在,但浏览器不会重定向