使用PHP的URL参数

时间:2013-07-15 15:02:07

标签: php javascript apache address-bar

是否有类似于GET数据传递URL中变量的方法?例如,使用斜杠?

我目前有一个.php文件,它使用javascript重新加载具有不同内容的div来导航页面,但是你可以想象,地址栏中的地址保持不变。

我希望用户能够链接到不同的页面,但如果只查看一个文件,那么传统上这是不可能的。

6 个答案:

答案 0 :(得分:0)

你可能想要使用Apache的mod_rewrite功能。

这个页面有一个很好的例子http://www.dynamicdrive.com/forums/showthread.php?51923-Pretty-URLs-with-basic-mod_rewrite-and-powerful-options-in-PHP

答案 1 :(得分:0)

尝试使用:

$_SERVER['QUERY_STRING']; // Or
$_SERVER['PHP_SELF'];

如果这没有帮助,请发布您尝试完成的URL类型的示例。

答案 2 :(得分:0)

这样的事情可能会起作用;

将此放在/ yourdir /

RewriteEngine On

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

RewriteRule ^(.+)$ yourindexfile.php?string=$1 [QSA,L]

所有请求都将通过网址发送至yourindexfile.php。因此http://localhost/yourdir/levelone变为yourindexfile.php?string=levelone

你可以像这样分解字符串;

$query= explode('/', rtrim($_GET['string'], '/'));

答案 3 :(得分:0)

您要寻找的技术是.htaccess。从技术上讲,这是不可能的,所以你必须破解你的mod重写来实现这一点。

  RewriteRule On +FollowSymLinks
  RewriteCond %{SCRIPT_FILENAME} !-d  
  RewriteCond %{SCRIPT_FILENAME} !-f 
  RewriteRule ^(user)/([^\.]+)$ ./index.html?tab=user&name=$2

将其添加到顶层目录中的.htaccess页面。你必须稍微改变你的网站结构。假设index.html是您的索引。这是一个向后重写,因此,如果要使用查询字符串转到页面,它将不会将它们重定向到前一页,如果没有查询字符串进入页面,它将像GET数据一样工作。 / p>

您使用$_GET['tab']$_GET['name']

在您的php文件中获取此数据

答案 4 :(得分:0)

我认为Symfony Routing Component是您所需要的;)可用作独立组件,它可以为您的类固醇路由提供支持。

答案 5 :(得分:0)

我这样做(在my框架中,这是JREAM framework的一个分支):

RewriteEngine On

#When using the script within a subfolder, put this path here, like /mysubfolder/
RewriteBase /mysubfolder/

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

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

然后拆分不同的网址段:

$url = isset($_GET['url']) ? $_GET['url'] : null;
$url = rtrim($url, '/');
$url = filter_var($url, FILTER_SANITIZE_URL);
$url_array = explode('/', $url);

现在$ url_array [0]通常定义你的控制器,$ url_array [1]定义你的动作,$ url_array [2]是第一个参数,$ url_array [3]是第二个等...