我正在使用.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 的初学者)
一种方法是检查$passed_url[1]
。如果是"用户",那么您就知道自己在用户页面上。
更好的方法是使用 index.php 作为前端控制器,并根据请求 uri 将请求传递给控制器。 有许多方法可以做到这一点。
一些框架将 uri 映射到 class::method。因此,您的 url 将更改为 /users/view/username
并调用users::view
。
我更喜欢编写正则表达式,并且匹配的正则表达式控制加载哪个控制器。
您实际上可以通过以下方式更改重写引擎.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}
所以,这个规则,它到底做了什么:
当URL
www.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"]
变量进行操作!
说什么?我这样做。希望对您有所帮助!