如何根据URL中的get变量重定向URL

时间:2014-03-10 16:41:27

标签: php regex .htaccess

我正在尝试根据获取变量更改我的网站网址,以便我可以提高网站的安全性。

例如,我想更改我的地址,这是我的htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /category.php?cat_id=$1&mode=full&start=$1

我的网站网址是:

http://joinexam.in/category.php?cat_id=17&mode=full&start=36 

我想将此网址转换为:

http://joinexam.in/category/1736
  • 其中cat_id = 17
  • 并且开始= 36

因此它会在1736页面后变为category.php,我正在尝试使用.htaccess文件。

我想将cat_idstart作为get变量,然后根据这些获取变量,我想更改网站的网址。

任何人都可以解释实现这一目标的正确方法吗?

1 个答案:

答案 0 :(得分:0)

<强>的.htaccess

这会将每个URL转发到index.php。

Options +FollowSymLinks
RewriteEngine On

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

RewriteRule ^.*$ ./index.php

<强> PHP

获取index.php中的“原始”网址:

// this gives you the full url
$request_uri = $_SERVER['REQUEST_URI']; 

// split the path by '/'
$params     = split("/", $request_uri);

然后你可以根据这些$ params路由。 作为一个好的和快速的路由器库我建议:https://github.com/nikic/FastRoute 通过使用它,你不必乱用htaccess regexp的东西,并可以保持在PHP级别:)