.htaccess重写所有URL,即使路径

时间:2016-10-01 11:14:24

标签: php .htaccess mod-rewrite

我已经制作了一些基于URL引导用户的PHP代码,并且我找到了一些htaccess代码,它提供了索引页面的URL,让我的代码可以工作。但是,它在技术上也揭示了什么是文件/文件夹以及什么不是。

如果我转到website.com/somethingrandom/somethingelse,我会收到404错误,而转到website.com/cache/private会说禁止。

除了一些选择的文件类型(例如图像,css和js文件)之外,我将如何对其进行编辑以使其不存在任何文件?

以下是目前的代码:

RewriteBase /
RewriteEngine On
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-f
# This rule converts your flat link to a query
RewriteRule ^(.*)$ index.php?_page_location=$1 [L,NC,NE]

2 个答案:

答案 0 :(得分:1)

如果您想要隐藏某些文件或目录,即将其显示为不存在,则可以使用R|redirect标记重定向

RewriteRule ^cache/private - [R=404,L]

这告诉客户端,没有名为cache/private404)的文件。但请注意,这适用于所有客户端,甚至是您自己。

要对此进行限制,您必须在规则前添加一些RewriteCond,或将其包装在某些条件语句中,如If或类似。

如果要隐藏所有文件,请使用“更广泛”的正则表达式,例如

RewriteRule ^ - [R=404,L]

这将为您的所有网站的网址返回“未找到”。您还可以提供一组网址,例如此

RewriteRule ^(?:cache/private|secrets|database) - [R=404,L]

将隐藏

以下的所有内容
  • 高速缓存/私有
  • 秘密
  • 数据库

有关如何自定义您自己的模式的详细信息,请参阅Apache - Regular Expressionshttp://www.regular-expressions.info/

答案 1 :(得分:1)

你的规则如下:

.main{
  display: inline-table;
  border: 1px solid blue;
}

.left {
  width: 79%;
  margin-right: 1%;
  display: table-cell;
  border: 1px solid green;  
}

.right {
  width: 20%;
  border: 1px solid red;
  display: table-cell;
  vertical-align: middle;
}