【问题标题】:Setting custom URLs with PHP使用 PHP 设置自定义 URL
【发布时间】:2011-01-22 13:27:13
【问题描述】:

所以,我需要设置自定义 URL,以便

http://example.com/dynamic/

前往:

http://example.com/dynamic.php

我知道这是一个非常简单的操作,但经过一番谷歌搜索后,我找不到答案。处理这种情况最简单的方法是什么?

【问题讨论】:

标签: php html url


【解决方案1】:

您必须使用 url 重写来做到这一点。 这取决于您使用的 Web 服务器。 例如,如果您的网络服务器是 Apache,您可以使用 .htaccess。 Apache URL Rewriting.

【讨论】:

    【解决方案2】:

    正则表达式是这样的:

    RewriteEngine on
    RewriteRule ([^/]+)/?$ $1.php [L]
    

    如果不包含正斜杠,则在左侧运行正则表达式将返回“dynamic/”或“dynamic”。然后它将用dynamic.php替换第一个带括号的块(“dynamic/”)中捕获的内容。

    您可以在此处尝试您的 URL 重写:

    http://martinmelin.se/rewrite-rule-tester/

    这里是你的通用正则表达式:

    http://regexpal.com/

    【讨论】:

    • 也许更好的正则表达式是 ([^/]+)/*?$ 因为它会在最后考虑多个正斜杠,但我不知道服务器是否会将它们保留在那里: P
    【解决方案3】:

    有几种方法可以实现这一点:-

    1. URL 重写(附加到服务器上 /dynamic/ 目录中的 .htaccess 文件)
    RewriteEngine on
    RewriteRule ^$ dynamic.php
    
    1. 在根文件夹中创建一个虚拟 index.htm/.html/.php 文件,即。 /动态的/
      如果是 HTML,请使用以下 javascript:-
    <script type="text/javascript">
         window.location = "http://example.com/dynamic.php"
    </script>
    
    <script type="text/javascript">
         location.href='http://example.com/dynamic.php';
    </script>
    
    <script type="text/javascript">
         location.replace('http://example.com/dynamic.php');
    </script>
    
    However, if using PHP instead (recommended), include the following:-
    

    header("Location: @987654321@");

    Remember to use ob_start(), ob_end_flush() to fix the output buffer, if you get the error that the headers are already sent and you can't modify the header information.
    

    希望这会有所帮助。

    【讨论】:

    • 正则表达式 ^$ 不返回任何内容,因为您在说:找到我的起始字符,然后是结束字符。那不会给你任何东西,因为它实际上是一个空白字符串。此外,您不会想用 dynamic.php 替换它,因为这是重写,除非您网站上的所有页面都转到 dynamic.php,否则它没有任何意义。 php 标头的好信息。此外,还有要重定向的元标记,但这不会是重写。
    • 虽然将它放入 /dynamic 将适用于这种特殊情况,但我认为全局 .htaccess 将比每个文件夹中的一个要好得多。这样您就可以确保其他目录也能正常工作。
    猜你喜欢
    • 2016-08-28
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2019-04-10
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多