【问题标题】:Changing URL format in PHP [duplicate]在 PHP 中更改 URL 格式 [重复]
【发布时间】:2015-11-16 02:49:00
【问题描述】:

我想改变这种格式

 http://mysite.tld/go.php?id=20 

 http://mysite.tld/20

如何使用 PHP 实现这一点?

【问题讨论】:

  • 你有没有尝试过?
  • 直到现在对我来说没有任何工作:(

标签: php apache .htaccess mod-rewrite url-rewriting


【解决方案1】:

在你的 Root/.htaccess 文件中试试这个:

RewriteEngine On
RewriteCond %{THE_REQUEST} /go\.php\?id=([^\s]+) [NC] 
RewriteRule ^ /%1? [NC,R,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ go.php?id=$1 [QSA,L,NC]

【讨论】:

    【解决方案2】:

    如前面的答案中提到的,通常的方法是通过 .htaccess 文件使用Apache's Rewrite Engine

    如果您正在寻找特定于 PHP 的解决方案:

    1. 将所有传入请求重定向到单个 PHP 页面。
    2. 在此页面上,首先检索使用预定义的$_SERVER 数组输入的 URL,不包括基本 URL。 ($_SERVER["HTTPS"],$_SERVER['HTTP_HOST'],$_SERVER['REQUEST_URI'])
    3. 一旦你有了这个,使用适当的Regex 将 URL 拆分为键和值对。 ('@/@')
    4. 将键映射到存储页面引用的数组的键。
    5. 使用值的 POST 或 GET 参数重定向到此页面。

    【讨论】:

      【解决方案3】:

      您希望您的服务器而不是 PHP 来处理这个问题。

      如果您的服务器支持 .htaccess 文件,您可以创建它并添加:

      RewriteEngine On
      RewriteRule ^([^/]*)$ /go.php?id=$1 [L]
      

      这将允许您访问

      example.com/20 但被调用的页面将是go.php?id=20

      【讨论】:

        猜你喜欢
        • 2015-03-30
        • 2014-01-21
        • 2011-09-01
        • 2012-12-02
        • 1970-01-01
        • 2020-10-30
        • 2017-08-28
        • 2013-05-24
        • 2022-01-23
        相关资源
        最近更新 更多