我的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]
现在网址为http://localhost/project_name/login.php
这是正确的。但似乎php没有使用原始链接来抓取文件(即来自/project_name/app/view/login.php
)但是从这里/project_name/login.php
因此它会抛出404错误。
我应该改变什么?请帮助我,我只是试图隐藏网址中的/app/view/
部分,以便用户看不到我的文件夹结构。我已经阅读了今天大约9小时的各种方法,但仍然无法正常工作。
希望我的问题足够明确。非常感谢任何帮助!
答案 0 :(得分: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]