Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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
Php HTACCESS:将域根目录更改为子目录_Php_.htaccess_Directory_Root - Fatal编程技术网

Php HTACCESS:将域根目录更改为子目录

Php HTACCESS:将域根目录更改为子目录,php,.htaccess,directory,root,Php,.htaccess,Directory,Root,我正在尝试使用子目录作为我的一个域的根文件夹。使用.htaccess,我使用mod_rewrite来完成工作。以下是我已有的代码: RewriteCond %{HTTP_HOST} ^(www.)?domain.com$ RewriteCond %{REQUEST_URI} !^/domain/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /domain/$1

我正在尝试使用子目录作为我的一个域的根文件夹。使用.htaccess,我使用mod_rewrite来完成工作。以下是我已有的代码:

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]
这就完成了工作,但不是全部。例如:

如果我转到,它会在
文件夹中显示
index.php
。如果我转到,它将显示
test
文件夹的内容(或403)但是如果我转到(使用快捷方式,甚至显示文件夹),我会被重定向到

这是不应该发生的。如果有的话,它要么从.htaccess(如果正在使用测试)执行掩码,要么应该直接转到。我已经想办法解决这个问题,但我做不到。所以我在寻求你的帮助!:)


非常感谢您提供的所有帮助。

评论者说得对,如果您想
使用子目录作为我的一个域的根文件夹,只需在apache虚拟主机配置()中进行配置即可。

试试这个:这有点粗糙,但应该可以做您想做的事情。这里有一点混乱:我尝试做的一些事情将取决于您的重写库(您可能需要删除一个或多个/字符)

我基本上添加了一个初始块,专门查找/domain/文件夹中不以斜杠结尾的目录,并添加了一个。让我知道它是否有效

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond /domain/%{REQUEST_URI} -d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /domain/$1/

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/domain/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /domain/$1

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ /domain/index.php [L]

像这样使用RewriteBase:

重写基/f2f/f2fweb

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(.*)$ /domain/$1/ [L]

上面的代码成功地完成了我希望它完成的一切。

帮助我的是主机上的auto.htaccess生成器

DirectoryIndex index.php
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://(www\.)?domain.com/TEST//.*$ [NC]
RewriteRule \.(js|css|jpg|gif|png|bmp|mp4|3gp|m4a|m4r|aac|mp3|ogg|wave)$ - [F]

这是vhost的作业,而不是.htaccess。我正在使用.htaccess。因此,请提供支持,而不是让我学习其他东西。你不需要学习任何东西,你只需更改vhosts.conf中的路径并重新启动服务器。“因此,请提供支持,而不是让我学习其他东西。”---因此,这不是一个可以指定回答者回答什么以及如何回答的地方。不管你们是否接受这个答案——别忘了这是一个专业人士帮助专业人士的网站,而不是你们个人的免费支持。伙计们,据我所知,他只是没有访问服务器的权限,但有.htaccess。这对我不起作用。我仍然得到与原始编码相同的效果。