重定向到内部Web目录 [英] Redirect to internal web-directory

查看:237
本文介绍了重定向到内部Web目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经发现了这个脚本改变的DocumentRoot:

I already found this script to "change the documentroot":

RewriteEngine on
RewriteCond %{HTTP_HOST} ^your-domain-name.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.your-domain-name.com$
RewriteCond %{REQUEST_URI} !new-folder/
RewriteRule (.*) /new-folder/$1 [L]

这是简单和冷静,但我想补充脚本。我想重定向到文件/new-folder/index.php如果所需的文件不存在的里面的目录/新文件夹/ ,这样不仅%{REQUEST_URI }!-f ! 但我不知道如何获得当前脚本路径,如 __ __ DIR (PHP)在.htaccess中。 所以我的问题是,如何检查文件是否子目录(​​新文件夹)里面是否存在? 我的重定向将理论上是这样的:

It's simple and cool, but I want to complement the script. I want to redirect to the file /new-folder/index.php if the requested file does not exist inside the directory /new-folder/, so not only %{REQUEST_URI} !-f! But I don't know how to get the current script-path, like __DIR__ (PHP) in .htaccess. So my question is, how to check if a file exists inside a subdirectory (new-folder)? My redirect will theoretically look like:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^your-domain-name.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.your-domain-name.com$
RewriteCond %{REQUEST_URI} !./new-folder/
RewriteCond (PATH+Filename, if no filename is set, take index.php) !-f
RewriteRule (.*) ./new-folder/index.php [L]

以上code使用./来检查相对的,它不知道,如果它的根里面!

The above code uses ./ to check relative, it does not know if it's inside the root!

此外,我想操纵REQUEST_URI:更换/新文件夹/从中,因此该文件夹中的脚本没有做到这一点。

Also I would like to manipulate the REQUEST_URI: replace the /new-folder/ from it, so scripts inside this folder don't have to do it

推荐答案

您可以使用它像这样在你的根目录的.htaccess:

You can use it like this in your root .htaccess:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www\.)?your-domain-name\.com$ [NC]
RewriteCond %{REQUEST_URI} !/new-folder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/new-folder/$1 !-f [NC]
RewriteCond %{DOCUMENT_ROOT}/new-folder/$1 !-d [NC]
RewriteRule (.*) /new-folder/index.php [L]

另一种选择是使用在任何子目录 /anydirectory/.htaccess

RewriteEngine On

RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
RewriteRule ^(.*)$ - [E=BASE:%1]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/%{ENV:BASE}new-folder/$1 !-f [NC]
RewriteCond %{DOCUMENT_ROOT}/%{ENV:BASE}new-folder/$1 !-d [NC]
RewriteRule (.*) %{ENV:BASE}new-folder/index.php [L]

这篇关于重定向到内部Web目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆