1

我正在使用 .htaccess 代码将页面标题传递给 url,然后在页面加载时使用 php 从 mysql 表中检索它们。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

我正在使用这个 php 代码来分解 url 并获取标题:

$passed_url = $_SERVER['REQUEST_URI'];
$passed_url = explode("/", $passed_url);
$passed_url = end($passed_url);

现在我想创建一个用户个人资料页面www.website.com/users/User_name_in_here ,如果这是一个用户页面,或者它只是一个可以像这样编写的普通页面,我如何使用 php 检查:www.webiste.com/Page_title_in_here 有没有更好的方法来做到这一点?(我只是php中的入门者)

4

2 回答 2

1

一种方法是检查$passed_url[1]。如果是“用户”,那么您就知道您在用户页面上。

更好的方法是使用 index.php 作为前端控制器并根据请求 uri 将请求传递给控制器​​。有很多方法可以做到这一点。

一些框架将 uri 映射到 class::method。因此,您的 url 将被更改为/users/view/username并被users::view调用。

我更喜欢编写正则表达式,并且匹配哪个正则表达式控制加载哪个控制器。

于 2012-06-18T04:39:22.433 回答
0

您实际上可以通过.htaccess这种方式更改您的重写引擎文件:

RewriteEngine On
RewriteRule (.*)-(.*)\.ptf$ ./?page=$1&id=$2&%{QUERY_STRING} 
RewriteRule ^([^/]*)\.ptf$ ./?page=$1&%{QUERY_STRING} [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ ./?page=$1&id=$2&%{QUERY_STRING}

所以,这条规则,它的确切作用是:

URLwww.website.com/Page_title_in_here,

它去www.website.com/?page=Page_title_in_here

当你这样说时www.website.com/users-User_name_in_here

它重定向到www.website.com/?page=users&id=User_name_in_here

所以你可以用$_GET["page"]$_GET["page"]变量来操作!

说啥?我这样做。希望这对你有帮助!

于 2012-06-18T04:46:52.030 回答