你如何获得最后用斜线显示的网址?

时间:2012-06-22 14:24:54

标签: php url url-rewriting

对此可能有一个简单的答案,但我找不到一个,所以我的简单问题是,你如何在最后用斜杠显示网址?

例如:example.com/page/而不是example.com/page.html或example.com/page.php

我读过http://php.net/manual/en/security.hiding.php,但大部分都是我的头脑。我将expose_php设置为off,但扩展仍然存在,是通过编辑配置文件中的内容还是将代码添加到php脚本来实现的?

作为参考,我发现mod_rewrite wiki很有帮助。

4 个答案:

答案 0 :(得分:3)

这是通过向HTTP服务器添加URL重写规则来实现的,该服务器将传入的请求映射到 example.com/page / example.com/page.php 例如。

请注意,当客户端尝试访问与您的网页相关的某些文件时,使用目录样式名称(带斜杠)会导致一些问题。

  • 在获取 example.com/page.php 时,如果浏览器遇到要加载的CSS文件,他将在 example.com/ 中查找它file.css
  • 获取 example.com/page / 时,他会尝试加载 example.com/ page / file.css ,因为你是不再在URI的顶级文件夹中。您必须在每个页面中添加<base href="http://example.com" />标记,最终将目录样式页面重命名为错误想法。

答案 1 :(得分:1)

你可以使用mod_rewrite(在apache服务器上)(这是比PHP-Parser Variante更好的方式)

示例:

RewriteEngine on 
RewriteRule ^(.*).html$ $1.php

答案 2 :(得分:1)

阅读本文,了解如何使用mod_rewrite创建干净的URL: http://wettone.com/code/clean-urls

答案 3 :(得分:0)

在您的PHP代码中,您可以在一开始就使用它:

<?php
    function curPageURL() {
     $pageURL = 'http';
     if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
     $pageURL .= "://";
     if ($_SERVER["SERVER_PORT"] != "80") {
      $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
     } else {
      $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
     }
     return $pageURL;
    }
    if(substr($_SERVER["REQUEST_URI"], -1) != "/")
        header('Location: ' . curPageURL() . '/');
?>

希望这有帮助! :)