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

通常,显示个人资料页面非常古老的方式如下:


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



u=12345是用户标识。

最近几年,我发现一些网站有很好的网址,比如:


www.domain.com/profile/12345



我如何在PHP中实现这个?

我的猜测,它是不是与.htaccess文件有关? 能给我更多关于如何写.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>



然后,index.php 可以根据 $_SERVER['PATH_INFO'] 变量执行操作:


<?php


 echo $_SERVER['PATH_INFO'];


 // outputs '/63.html'


?>



我最近在一个应用程序中使用了以下内容。

.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>



index.php


foreach (explode ("/", $_SERVER['REQUEST_URI']) as $part)


{


 // Figure out what you want to do with the URL parts.


}



尝试此代码,将代码放入htaccess文件中:


Options +FollowSymLinks



RewriteEngine on



RewriteRule profile/(.*)/ profile.php?u=$1



RewriteRule profile/(.*) profile.php?u=$1 



它将创建一个漂亮的URL:

http://www.domain.com/profile/12345/

更多htaccess漂亮的网址: http://www.webconfs.com/url-rewriting-tool.php

...