如何在php中创建友好的URL?

2022-08-30 08:42:11

通常,显示某些个人资料页面的做法或非常古老的方式是这样的:

www.domain.com/profile.php?u=12345

其中 是用户 ID。u=12345

近年来,我发现一些网站具有非常好的网址,例如:

www.domain.com/profile/12345

如何在 PHP 中执行此操作?

只是一个疯狂的猜测,它与文件有关吗?你能给我更多关于如何编写文件的提示或一些示例代码吗?.htaccess.htaccess


答案 1

根据本文,您需要一个mod_rewrite(放置在文件中)规则,如下所示:.htaccess

RewriteEngine on
RewriteRule ^/news/([0-9]+)\.html /news.php?news_id=$1

这映射了来自

/news.php?news_id=63

/news/63.html

另一种可能性是使用forcetype来做到这一点,它迫使任何沿着特定路径使用php来评估内容。因此,在您的文件中,输入以下内容:.htaccess

<Files news>
    ForceType application/x-httpd-php
</Files>

然后索引.php可以根据变量采取行动:$_SERVER['PATH_INFO']

<?php
    echo $_SERVER['PATH_INFO'];
    // outputs '/63.html'
?>

答案 2

我最近在一个应用程序中使用了以下内容,该应用程序可以很好地满足我的需求。

.htaccess

<IfModule mod_rewrite.c>
# enable rewrite engine
RewriteEngine On

# if requested url does not exist pass it as path info to index.php
RewriteRule ^$ index.php?/ [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?/$1 [QSA,L]
</IfModule>

索引.php

foreach (explode ("/", $_SERVER['REQUEST_URI']) as $part)
{
    // Figure out what you want to do with the URL parts.
}

推荐