我如何用.htaccess隐藏我的网页名称?

时间:2015-08-20 12:00:22

标签: php .htaccess url url-rewriting

我的代码

RewriteRule ^walls/([0-9a-zA-Z-_]+) display.php?art_nm=$1 [NC,L]

我得到的是:

  

website.com/walls/i_love_coding

我需要的是:

  

website.com/i_love_coding

1 个答案:

答案 0 :(得分:1)

您可能应该使用front controller pattern。基本上,您向前端控制器发出每个请求,决定要做什么。

<强>的.htaccess

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule . /index.php [L]
</IfModule>

然后,使用“前端控制器”根据$_SERVER['REQUEST_URI']转发请求以更正脚本。

<强>的index.php

<?php

$name = trim($_SERVER['REQUEST_URI'], '/');
$page = find_page_by_name($name);

if ($page) {
    require $page;
} else {
    require __DIR__.'/errors/404.php';
}

谨慎使用find_page_by_name功能,不返回未经授权的文件路径;您应确保您的路径位于特定目录中(请参阅realpathstrpos)。

例如,攻击者可能会尝试获取http://example.com/../../etc/passwd !!!

对于更复杂的路由,您应该尝试使用SilexSlim等微框架。