Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess Htaccess如何正确路由到正确的目录?_.htaccess_Routing - Fatal编程技术网

.htaccess Htaccess如何正确路由到正确的目录?

.htaccess Htaccess如何正确路由到正确的目录?,.htaccess,routing,.htaccess,Routing,我的服务器上有一个文件夹结构,如下所示: .htaccess index.php [website1] [placeholder] index.php [website2] [website3] 所有域web1.com、web2.com和web3.com都链接到此目录。我喜欢htaccess将它们路由到正确的目录。因此,web1.com访问website1,web2.com访问website2,等等 然而,我喜欢URL的样子,它应该显示website1中的内容 现在我有

我的服务器上有一个文件夹结构,如下所示:

.htaccess
index.php
[website1]
    [placeholder]
        index.php
[website2]
[website3]
所有域web1.com、web2.com和web3.com都链接到此目录。我喜欢htaccess将它们路由到正确的目录。因此,web1.com访问website1,web2.com访问website2,等等

然而,我喜欢URL的样子,它应该显示website1中的内容

现在我有以下代码:

RewriteCond %{HTTP_HOST} ^(web1.com)$ [NC]
RewriteRule ^(.*)$ http://www.web1.com/$1

RewriteCond %{HTTP_HOST} ^(www.web1.com)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /website1/$1

RewriteCond %{HTTP_HOST} ^(www.web1.com)$ [NC]
RewriteRule ^(/?|index.php)$ website1/index.php [L]
这是可行的,但是如果您转到它,它将在URL中显示以下内容:

http://www.web1.com/website1/placeholder/
当然,最好将URL视为。因为记录确实显示了正确的页面

我怎样才能解决这个问题?它快把我逼疯了

编辑(回答):

RewriteCond %{HTTP_HOST} ^(www.web1.com)$ [NC]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^website1/(.*)([^/])$ http://%{HTTP_HOST}/$1$2/

不确定这是否是正确的方法,但似乎有效。

您是否尝试过将重写规则的p标志设置为请求代理?为什么这是一件好事?我没有对代理做任何操作。如果您将P标志添加到重写规则,那么Apache将在内部将保留原始url的请求代理到浏览器。这不是你想要的吗?我用:RewriteCond%{HTTP\u HOST}^(www.web1.com)$[NC]RewriteCond%{REQUEST\u FILENAME}-d RewriteRule^website1/(.*)([^/])$HTTP://%{HTTP\u HOST}/$1$2修复了它/