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

我有一个非常基本的两页网站:主页和一个关于页面.我正在尝试使用htaccess重写URL,以便显示为:

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

站点的实际文件夹结构中,主页是/index.PHP,关于页面是/about.PHP(均显示在根目录中).

我一直在研究使用别名的方法,但不幸的是,我的主机(Dreamhost)不允许访问httpd.config,因此不在窗口内,我只能在htaccess文件中使用重写规则.

由于index.PHP文件自动显示在域根目录(http://domain.com/)中,因此到目前为止,我设法使用以下几行使about页面正确显示在domain.com/about上:

RewriteEngine On
RewriteRule ^about$/about.PHP

我还使用301重定向,例如,domain.com/about/(带有斜杠)也可以直接重定向回/ about URL,如下所示:

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

这很好.

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

因此,我该如何首先对这两个文件进行“盲目”重写(需要一个更专业的术语),以便使URL看起来正确,而且有效地“阻止”对文件的直接访问-确保有人要尝试直接访问PHP文件,URL仍会以“漂亮”版本而不是完整的文件名和PHP扩展名出现在访问者的浏览器中?

任何建议都将不胜感激,我已经再研究了几天(我认为这里的任何地方都没有与之完全相同的东西),并且我一生都无法解决这个问题!

解决方法:

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

您也可以

RewriteRule ^about.PHP - [L,gone]

要么

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

但这必须先于其他RewriteRules.如果通过/about.PHP访问该页面,它将发送410消失或301移动永久响应.有关mod_rewrite的完整文档,请参见Apache Module mod_rewrite.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...