0

我有一个具有以下文件夹结构(基本结构)的 php 网站。

  • 项目名称
    • 应用程序
      • 控制器
      • 模型
      • 看法
    • css
    • js
    • 图像
    • 索引.php

所以当我在 WAMP 中查看 index.php 时,网址是http://localhost/project_name/

但是当我进入网站(例如,位于视图文件夹下的 login.php)时,url 是这样的。http://localhost/project_name/app/view/login.php

我发现使用 .htaccess 我们可以更改网址。所以我尝试了这个(在.htaccess中)。

RewriteEngine on
RewriteBase /
Redirect 301 /project_name/app/view/login.php /project_name/login.php
RewriteRule ^/project_name/login.php$ /project_name/app/view/login.php [L]

现在 urlhttp://localhost/project_name/login.php是正确的。但似乎 php 不使用原始链接来获取文件(即 from /project_name/app/view/login.php)而是从这里/project_name/login.php

所以它会抛出 404 错误。

我应该改变什么?请帮助我,我只是想/app/view/从 url 中隐藏一部分,这样用户就不会看到我的文件夹结构。我今天已经阅读了大约 9 小时的各种方法,但仍然无法正常工作。

希望我的问题足够清楚。任何帮助是极大的赞赏!

4

1 回答 1

0

通过 htaccess 文件中的重写规则传递的 URI 删除了前导斜杠,因此您的规则:

RewriteRule ^/project_name/login.php$ /project_name/app/view/login.php [L]

永远不会匹配任何东西,因为^/. 此外,由于您正在重写与先前重定向匹配的 URI,因此您的浏览器将看到一个重定向循环并说它没有正确重定向。您需要匹配实际请求而不是 URI:

RewriteEngine on
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /project_name/app/view/login\.php
RewriteRule ^ /project_name/login.php [L,R=301]

RewriteRule ^/?project_name/login.php$ /project_name/app/view/login.php [L]
于 2012-10-01T18:25:10.990 回答