清除URL并获取节名称


Clean URLs and Getting Section Name

我正在清理我的URL,在获取用于确定要突出显示/显示导航的哪个部分的部分/运动名称(例如足球)时遇到问题。

示例URL:

http://example.com/index.php?sports=football

.htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?sports=$1 [NC,L]

到目前为止,一切都很好。然后我试图获取节名,但它不起作用:

$url = "$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$parsed_url = parse_url($url);
parse_str($parsed_url['query'], $output); // $output['sports'];

这是因为我需要获取地址栏中可见的URL吗?

http://example.com/football/college

如果是的话,有人能解释一下处理事物的顺序吗(例如.htaccess、php等)?

您可以通过$_GET全局数组读取查询参数。因此,在您的情况下,您可以按如下方式访问它:

echo $_GET['sports'];

关于访问文件的顺序。首先,Apache会收到一个对公共目录中资源的请求,该目录包含.htaccess,该文件包含Apache处理该目录中文件请求的指令。

之后,Apache会发现该文件是PHP文件,因此它将其交给PHP处理,脚本的输出包含在Apache提供的响应中。