如何使用查询字符串将URL条目重定向到特定文件?

时间:2018-04-30 18:54:21

标签: .htaccess

例如,我有一个名为 footer1.php

的PHP文件

我想为这个名为“ footer1.php ”的特定文件制作一个重写文件

我的常规网址结构是 - http://localhost/seestatus_new/footer1.php?page=about&cat=history

我想将其更改为 - http://localhost/seestatus_new/about/history

我的.htaccess文件示例 -

Options +FollowSymLinks

#turn rewrite engine on
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#rewrite rule for footer1.php
RewriteCond %{REQUEST_URI} ^/footer1\.php$
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-%]+)$ footer1.php?page=$1&cat=$2 [L,QSA]

请积极帮助这个。提前谢谢。

1 个答案:

答案 0 :(得分:0)

最简单,最直接的方法就是使用重定向。但是,这并不总是令人满意,并且需要大量额外的文件。

但是,您可以使用window.href获取当前页面地址,并使用正则表达式来实际获取扩展名。

您的代码可能会在每个网页上加载footer1.php(在文件树中的每个位置,无论实际网址如何),然后使用正则表达式解析网址并获取地址。然后,您可以在php代码中设置pagecat等变量。

这是一种解决方法,但它可以使用并允许您在网址中使用所需的网页地址,而无需更改数据加载结构。希望这有帮助!

编辑:代码

获取加载php的webapge的基本URL的方法是

$link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

但是,请注意,因为客户可以编辑这些内容。无论如何,这是获取php代码加载的网页网址的最佳方式。

然后你会使用parse_url方法

$url_array = parse_url($link, PHP_URL_PATH)

这将返回url路径。所以,例如,

https://website.com/path/to/file

将返回一个包含键“path”和值“path / to / file”的数组。

然后只需要使用preg_match将其转换为通常出现在标题中的两个变量,并将它们定义为php中的内联变量。然后,您可以继续使用定义的变量值的其余代码,而不必将它们放在URL中。