3

这可能有一个简单的答案,但我找不到一个,所以我的简单问题是,你如何让网址在末尾显示一个斜线?

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

我读了http://php.net/manual/en/security.hiding.php但大部分内容都超出了我的想象。我将expose_php设置为关闭,但扩展仍然存在,这是通过编辑配置文件中的内容还是在php脚本中添加代码来完成的?

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

4

3 回答 3

3

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

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

  • 在获取example.com/page.php时,如果浏览器遇到例如要加载的 CSS 文件,他会在example.com/file.css中查找
  • When fetching example.com/page/ he will try to load example.com/page/file.css, since you were not in the top level folder of the URI anymore. You'll have to add a <base href="http://example.com" /> tag in each of your pages, making the directory style page renaming a bad idea eventually.
于 2012-06-22T14:32:39.797 回答
1

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

例子:

RewriteEngine on 
RewriteRule ^(.*).html$ $1.php
于 2012-06-22T14:29:20.123 回答
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() . '/');
?>

希望这可以帮助!:)

于 2012-06-22T14:30:00.867 回答