重写不应显示子文件夹的 URL

重写不应显示子文件夹的 URL

我在我的网络空间中设置了多个域名(全部通过托管服务提供商)

所以www.maindomain.example链接到/maindomain我的网络空间。www.domain2.example链接到/domain2我的网络空间。到目前为止非常简单。

但是,只要我将另一个文件夹放入其中一个目录,folder该域本身就会再次被提及URL

想象一下……我test里面有一个文件夹maindomain。在这种情况下,这个文件夹的 URL 不是,www.maindomain.example/test而是www.maindomain.example/domain2/test。因此,maindomainURL 中重复的目录名称。

这是为什么? 有没有办法通过mod_rewrite和来消除这种情况.htaccess

我在.htaccess我的

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/maindomain/
RewriteCond %{DOCUMENT_ROOT}/maindomain%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/maindomain%{REQUEST_URI} -d
RewriteRule ^(.*)$ /maindomain/$1 [L]

但是,由于我不是服务器专家,所以我无法弄清楚这实际上意味着什么。

答案1

第一个RewriteCond检查 uri 是否不以 开头/maindomain/

第二和第三检查该文件是作为普通文件还是作为目录存在。

然后,如果所有条件都满足,则将重写内容添加/maindomain/到已经存在的 URL 中。

现在来看看你的问题。你有目录{DOCUMENT_ROOT}/maindomain/test/,并希望它可以从 访问www.maindomain.com/test。这行额外的代码可以完成这项工作。将其插入略低于 RewriteEngine On

RewriteRule ^test/(.*)$ /maindomain/test/$1 [L]

这将接受以 开头的任何 URI /test/,并将其重定向到/maindomain/test。该[L]部分的意思是,停止到这里重定向一轮(并且不评估下面的四行)并开始新一轮。

注意:这没有经过测试(因为我无法访问您的系统)。URL 重写通常需要进行一些测试才能正确完成。StackOverflow 不是为您提供支持的合适媒介。您需要学习自己进行 URL 重写或者雇佣了解该知识的人。

相关内容