【问题标题】:How can I rewrite a URL using PHP?如何使用 PHP 重写 URL?
【发布时间】:2011-08-07 06:02:04
【问题描述】:

我有一个类似http://domain.com/index.php?user=test 的网址

当用户登录时,我想显示一个类似http://domain.com/user 的 URL(用户 将是动态的)。

如何使用 PHP 重写 URL 来实现这一点?

【问题讨论】:

    标签: php url-rewriting


    【解决方案1】:

    您需要在.htaccess 中查看mod_rewrite

    在 .htaccess 中添加重写规则很简单。首先,通过将此行添加到您的 .htaccess 来激活 mod_rewrite:

    RewriteEngine on
    RewriteBase /
    

    然后添加您的规则以重定向您的页面:

    RewriteRule ^([^/]+)$ /yourpage\.php?user=$1
    

    【讨论】:

      【解决方案2】:

      你应该使用基于 .htaccess 的东西。以 WordPress 为例:

      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>
      

      这表示抓取任何不存在的页面(例如您的“用户”),然后重定向到主 index.php 文件。

      那个主要的index.php 然后可以抓取“用户”,您可以使用它从您的数据库中抓取数据并显示您想要的任何内容。


      编辑——类似于 AlienWebguy 的回答

      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^like/(.+) /like.php?user=$1 [L]
      </IfModule>
      

      【讨论】:

      • 嗨,克里,谢谢您的回复。我尝试了您的代码,但是当我尝试读取用户时,我的页面上出现了此错误。错误是Notice: Undefined index: user in C:\wamp\www\index.php on line 1
      • REQUEST 只访问$_POST$_GET$_COOKIE,尝试寻找$_SERVER['REQUEST_URI']
      • 谢谢,如果我想将 url domain.com/like.php?user=test 重写为 domain.com/like/test(这里测试是任何用户名)
      • 我的意思是当一个特定的词来调用另一个页面时,我希望这会有所不同
      猜你喜欢
      • 2013-04-29
      • 2016-07-17
      • 2010-11-04
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      相关资源
      最近更新 更多