Indexing Symlink,我是不是遗漏了什么?
我正在尝试将带有Indexing Symlink,我是不是遗漏了什么?,indexing,directory,symlink,public,Indexing,Directory,Symlink,Public,我正在尝试将带有index.php文件的public文件夹符号链接到httpdocs文件夹,该文件夹也位于该文件夹中 当我尝试对公用文件夹进行符号链接时,会出现一个错误,提示我已使用公用文件夹名称。我还尝试了将index.php文件本身进行符号链接,这虽然有效,但破坏了网站的功能 下面是我在符号链接public文件夹时使用的命令 ln -s /var/www/vhosts/mysite.co.uk/httpdocs/public /var/www/vhosts/mysite.co.uk/http
index.php
文件的public
文件夹符号链接到httpdocs
文件夹,该文件夹也位于该文件夹中
当我尝试对公用文件夹进行符号链接时,会出现一个错误,提示我已使用公用
文件夹名称。我还尝试了将index.php
文件本身进行符号链接,这虽然有效,但破坏了网站的功能
下面是我在符号链接public
文件夹时使用的命令
ln -s /var/www/vhosts/mysite.co.uk/httpdocs/public /var/www/vhosts/mysite.co.uk/httpdocs
ln -s /var/www/vhosts/mysite.co.uk/httpdocs/public/index.php /var/www/vhosts/mysite.co.uk/httpdocs/
下面是我在对index.php
文件进行符号链接时使用的命令
ln -s /var/www/vhosts/mysite.co.uk/httpdocs/public/index.php /var/www/vhosts/mysite.co.uk/httpdocs
tldr:当用户访问我的站点而不必使用mysite.co.uk/public/index.php时,我想使用公用文件夹中的
index.php
作为index.php
文件。index.php
文件必须保留在public
文件夹中。如果我理解正确,您希望从httpdocs/public
访问index.php
,并且该文件夹已经存在(如第一个案例中的错误所示)。您可以将文件链接到该(现有)文件夹:
ln -s /var/www/vhosts/mysite.co.uk/httpdocs/public /var/www/vhosts/mysite.co.uk/httpdocs
ln -s /var/www/vhosts/mysite.co.uk/httpdocs/public/index.php /var/www/vhosts/mysite.co.uk/httpdocs/
请注意,您需要指定要链接的文件itlsef解决方案(如果../public
和../httpdocs
中需要所有文件)
- 将数据从
移动到/var/www/vhosts/mysite.co.uk/httpdocs/public
/var/www/vhosts/mysite.co.uk/httpdocs
- 符号链接
至/var/www/vhosts/mysite.co.uk/httpdocs
../public
ln-s/var/www/vhosts/mysite.co.uk/httpdocs/var/www/vhosts/mysite.co.uk/httpdocs/public
缺点:
- 无限递归,例如
/var/www/vhosts/mysite.co.uk/httpdocs/public/public/public/public/
无法将symlink链接到现有文件/目录。如果可能,您将破坏树结构。事实上,您正在尝试将目录链接到其父目录。您的系统应如何解析被覆盖的路径 例如: 您有一个文件/a/b/c,可以执行以下操作:
ln-s/a/b/a
系统应如何解决现在无法访问的文件/a/b/c
将数据移动到所需目录中,而不是试图破坏文件树
可以将数据装载到现有目录(在卸载之前无法访问原始数据),但这对您的情况没有帮助。我已经设法让它工作了!我在
httpdocs
文件夹中的public/index.php
上使用了一个软符号链接,在httpdocs
文件夹中创建了一个index.php
文件
ln -s /var/www/vhosts/mysite.co.uk/httpdocs/public /var/www/vhosts/mysite.co.uk/httpdocs
ln -s /var/www/vhosts/mysite.co.uk/httpdocs/public/index.php /var/www/vhosts/mysite.co.uk/httpdocs/
然后,我将.htaccess
文件添加到httpdocs
文件夹中,其中包含以下内容
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
Options+FollowSymLinks
重新启动发动机
重写cond%{REQUEST_FILENAME}!-f
重写cond%{REQUEST_FILENAME}!-d
RewriteRule.index.php[L]
感谢@Attila支持我并帮助我!是的,我想用这个文件作为“主页”已经在公共文件夹
httpdocs/public/index.php
中。现在要访问它,我必须访问mysite.co.uk/public/index.php
,但我只想访问mysite.co.uk
并得到相同的结果,这个解决方案对我有效吗?如果我把源代码放在不同的地方,我会遇到同样的问题,它会对我产生影响我们在我的httpdocs
中创建一个/public
文件夹/symlink,它需要位于/mysite.co.uk/文件夹中。请参阅上次更新(我希望这次我做对了:)。在这两种情况下,您都需要指定文件名,第一个路径是使用:ln-s/var/www/vhosts/mysite.co.uk/index.php…
谢谢您的回答,如果您阅读了另一个答案中的注释,我尝试了这个方法,但出现了一个错误…它可以工作,但您没有解释您在做什么。例如/home不是/var,如果您没有正确设置PHP配置(open_basedir提示),我们将无法帮助您。