Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.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从url中删除公共html_Php_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php 通过htaccess从url中删除公共html

Php 通过htaccess从url中删除公共html,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我在服务器上有一个遗留项目,实际框架位于public_html文件夹上方的文件夹中。因此,目录结构如下所示: Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^ - [L] RewriteRule . index.php [QSA,NS] RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRul

我在服务器上有一个遗留项目,实际框架位于public_html文件夹上方的文件夹中。因此,目录结构如下所示:

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]
  • 域名
    • 应用程序/
    • 框架/
    • 公共网页/
      • index.php
现在我想把它放在我们自己的服务器上。这是托管公司创建的应用程序。根文件夹是默认的。现在我的目录结构如下:

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]
  • 违约/
    • 应用程序/
    • 框架/
    • 公共网页/
      • index.php
现在他指向默认文件夹,而不是公共html文件夹。这是与旧版本的唯一区别。因此,我在根文件夹默认设置中添加了一个.htaccess文件。此文件的内容是:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /public_html/$1 [QSA,L]
</IfModule>
所以,当我去我的网站,它的工作。但当我点击一个链接时,我得到:


但是我不想在我的url中使用公共html。如何修复此问题?

您可能需要搜索一种创建虚拟主机的方法。我知道我的一些网络主机允许我通过我的管理页面配置vhost。它会让你的服务器考虑URL而不包含指定的文件夹,但是回到它执行需要重定向的阶段。

< p>你应用了正确的规则,

但问题是,要解决此问题,您必须链接
从中删除公共html 你的所有链接,它将自动重定向到你需要的
没有公共html的路径

您能否将应用程序和框架文件夹级别设置为文件夹层次结构中的默认值,并将默认值替换为公共html?请包括您请求的URL以及所需的文件系统路径。如果您在html源代码的链接中看到
public\u html
,那么这是您需要在应用程序中解决的问题,而不是
.htaccess
。将这个“遗留项目”包含在公共Web空间中也会引起安全问题。“他指向默认文件夹”-谁是“他”?取决于您的代码(和服务器环境),但有时我会保持代码不变,并从web根目录创建符号链接。类似于:
default/index.php
public\u html/index.php
,它可能位于文档根目录之外。链接的html源代码是什么。你的HTML中有
吗?Laravel如何融入其中?我的坏朋友,我以为我看到了Laravel标签和公用文件夹让我想起了Lar!