gpt4 book ai didi

php - htaccess 中的别名,并阻止对原始文件的访问? (网址重写)

转载 作者:搜寻专家 更新时间:2023-10-31 20:53:39 26 4
gpt4 key购买 nike

我有一个非常基本的两页网站:主页和关于页面。我想要做的是使用 htaccess 重写 URL,以便显示为:

  • domain.com/(用于主页)
  • domain.com/about(关于页面)

在站点的实际文件夹结构中,主页为/index.php,关于页面为/about.php(均出现在根目录中)。

我一直在研究使用别名,但不幸的是,我的主机 (Dreamhost) 不允许访问 httpd.config,所以这是不可能的,我只能在 htaccess 文件中使用重写规则。

由于 index.php 文件将自动出现在域根目录 (http://domain.com/) 中,到目前为止,我已经设法使关于页面正确显示在 domain.com/about 使用这些行:

RewriteEngine On
RewriteRule ^about$ /about.php

我还使用了 301 重定向,例如,domain.com/about/(带有尾部斜杠)也像这样定向回/about URL:

Redirect 301 /about/ http://domain.com/about 

效果很好。

但是如果您在浏览器中访问正确的 URL,index.php 和 about.php 文件仍然会显示(例如:domain.com/about.php ) 因此,搜索引擎会看到(并编制索引)每个页面的两个版本!我已经在每个页面中设置了正确的规范元数据,但这似乎没有任何效果(规范元数据自网站上线以来一直在页面标记中)。

那么我将如何首先对这两个文件进行“盲目”重写(需要更专业的术语),以便 URL 看起来正确,同时有效地“阻止”对文件的直接访问 - 确保如果有人试图直接访问 php 文件,该 URL 仍会在访问者的浏览器中显示为“漂亮”版本,而不是完整的文件名和 php 扩展名?

任何建议将不胜感激,我已经研究了几天了(我不认为这里已经有任何与此完全相同的东西)而且我一生都无法完成这个出来!

最佳答案

检查 $_SERVER['REQUEST_URI']在 PHP 文件中。如果其中包含文件名(而不是您想要的 URI),则执行 301 或 404 或任何您想要的操作。否则照常提供页面。

你也可以做一个

RewriteRule ^about.php - [L,gone]

RewriteRule ^about.php /about [L,R=301]

但这必须在您的其他 RewriteRule 之前进行。如果通过 /about.php 访问页面,它将发送 410 Gone301 Moved Permanently 响应。参见 Apache Module mod_rewrite获取 mod_rewrite 的完整文档。

关于php - htaccess 中的别名,并阻止对原始文件的访问? (网址重写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4925723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com