【问题标题】:Cannot access links under the project directory in localhost (.htaccess) Ubuntu 16.04无法访问 localhost (.htaccess) Ubuntu 16.04 中项目目录下的链接
【发布时间】:2018-09-16 17:27:07
【问题描述】:

每当我在超链接、表单操作等中使用路径时,我都无法访问根目录作为 我的项目,它总是将我带到 localhost,例如,如果尝试通过超链接访问这样的内容:

/home/index

我最终被重定向到 localhost,并且 url 变为:localhost/home/index 而不是 localhost/myproject/home/index

我在 satckoverflow 上尝试了其他一些解决方案,但都没有成功,我将在此处列出它们:

试图改变 ->

DocumentRoot /myproject/

DocumentBase /myproject/

ps:只有当我明确说:/myproject/home/index 时它才有效,但这并不好。

我只想要一个仅适用于当前项目的解决方案,这样我就不需要在每次想要使用特定项目时配置 apache 特定文件。所以我需要一些只能在 .htaccess 中更改的东西才能更灵活!

这是 .htaccess、文件夹结构和我使用超链接的 html 文件之一的屏幕截图。

【问题讨论】:

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


    【解决方案1】:

    .htaccess 的更改不会帮助您。 .htaccess 规则可能会影响请求的 URL,但不会修改您的响应,因此如果您将 /home/about 作为 URL 放在 HTML 链接中,它将永远不会将其更改为 /myproject/home/about,并且此 URL 将始终相对于当前域。

    但是,如果您有单个条目文件,则可以在布局的标题中使用 <base> 标记来设置此页面上所有相对 URL 的基本路径。

    <base href="<?= htmlspecialchars(dirname($_SERVER['SCRIPT_NAME']), ENT_QUOTES) ?>"/>
    

    然后像&lt;a href="home/index"&gt;Home&lt;/a&gt; 这样定义的链接将指向http://localhost/myproject/home/index

    请注意,这不会影响非 HTML 链接,header("Location: /home/index"); 将指向 http:/localhost/home/index。此外,dirname($_SERVER['SCRIPT_NAME']) 可能并不总是可靠的。您可以考虑使用一些带有辅助方法的框架来获取应用程序的相对路径或从中复制一些解决方案 - 检测请求的基本路径可能是quite complicated

    【讨论】:

    • 它不起作用,但这次我认为是base标签有问题,因为我前几天尝试使用base标签,它并没有改变链接的根。我试图按照本教程学习如何构建自己的 mvc,我的代码完全相同,但我不明白为什么我的代码不能正常工作。 youtube.com/watch?v=f_HFX63Q-dI&t=84s
    • @GustavoH.Ribeiro 确保您的链接没有前导斜杠。
    • 完美,你是对的,谢谢!!!我将标记为已回答,但在访问公用文件夹内的静态内容时,我遇到了公用文件夹的问题,而无需明确指定 public 名称。
    猜你喜欢
    • 2017-07-18
    • 1970-01-01
    • 2017-08-05
    • 2013-10-31
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多