是否有类似于GET数据传递URL中变量的方法?例如,使用斜杠?
我目前有一个.php文件,它使用javascript重新加载具有不同内容的div来导航页面,但是你可以想象,地址栏中的地址保持不变。
我希望用户能够链接到不同的页面,但如果只查看一个文件,那么传统上这是不可能的。
答案 0 :(得分:0)
你可能想要使用Apache的mod_rewrite功能。
答案 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']
答案 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]是第二个等...