通过htaccess从url中删除public_html

时间:2017-01-05 10:48:32

标签: php apache .htaccess mod-rewrite url-rewriting

我在服务器上有一个遗留项目,其中实际框架位于public_html文件夹上方的文件夹中。所以目录结构是这样的:

  • domainname.com
    • 应用程序/
    • 框架/
    • 的public_html /
      • 的index.php

现在我想将它放在我们自己的服务器上。这是由托管公司创建的应用程序。根文件夹是默认。所以现在我的目录结构是这样的:

  • 默认/
    • 应用程序/
    • 框架/
    • 的public_html /
      • 的index.php

现在他指向默认文件夹而不是public_html文件夹。这是旧版本的唯一区别。因此,我已将 .htaccess文件添加到根文件夹默认值。该文件的内容是:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /public_html/$1 [QSA,L]
</IfModule>

在我的 public_html 文件夹中,我有一个 .htaccess 文件,如下所示:

Options +FollowSymLinks

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule . index.php [QSA,NS]
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule . /index.php [L,QSA,NS]

所以,当我访问我的网站时,它可以工作。但是当我点击链接时,我得到: http://domainname.com/public_html/theclickedpage/

但我不想在我的网址中使用public_html。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您可能想要搜索制作虚拟主机的方法。我知道我的一些webhost让我通过我的管理页面配置vhost。它会让你的服务器在不包含指定文件夹的情况下考虑url,但是在它执行所需的重定向的阶段。

答案 1 :(得分:0)

您应用了正确的规则,

但问题是你必须解决这个问题的链接 从中删除public_html 您的所有链接,它将自动重定向到您的所需 没有public_html的路径。