【问题标题】:How do you get urls to display with a slash at the end?你如何让url在最后显示一个斜线?
【发布时间】:2012-06-24 20:46:50
【问题描述】:

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

例如: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 很有帮助。

【问题讨论】:

  • 查看[url-rewriting] 的标签wiki。这是一个网络服务器功能。你需要 RewriteRules 和/或 MultiViews 来达到这个效果。 Php.ini 设置在很大程度上无关紧要。
  • 查看我的答案@grasshopper,我们可以检查URL末尾是否有/,如果没有,则通过重定向附加一个。 :)
  • 感谢您的回答,我会看一些 mod_rewrite 教程。

标签: php url url-rewriting


【解决方案1】:

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

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

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

【讨论】:

  • 为更清晰的 URL 添加额外的代码行似乎是一笔不错的交易
  • 使用 斜杠 会使您的 URI 看起来像是指向 目录,但不是这样 :对我来说,它看起来比干净更令人不安。
  • 好的,我明白你的意思了,最初我只是想摆脱 .php 扩展名,谢谢您的建议。
【解决方案2】:

在你的 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() . '/');
?>

希望这会有所帮助! :)

【讨论】:

  • 然后在重定向之后,服务器如何知道它必须解析和发送例如客户端的 PHP 页面?
  • 我不明白你!一旦重定向,为什么它不能解析?问题是how do you get urls to display with a slash at the end? 我的答案是对的吗?至少有意义的东西???
【解决方案3】:

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

示例:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多