我有一个托管在www.domain.com/app/dir/
上的网络应用
应用程序的网址应类似于www.domain.com/app/dir/?p=dashboard/
现在,我遇到一种情况,我需要在URL中使用唯一键(我不能将其用作查询字符串)。
所以我需要的是用户将使用不同的URL浏览Web应用程序,例如:
www.domain.com/user1/dir/?p=dashboard/
www.domain.com/user2/dir/?p=dashboard/
www.domain.com/user3/dir/?p=dashboard/
但是当用户访问上面的链接时,我需要浏览www.domain.com/app/dir/?p=dashboard/
中的文件(不更改浏览器的URL)。
注意:目录user1,user2,user3不存在
答案 0 :(得分:0)
如果您只想更改网址而不刷新页面:
此方法是纯javascript
window.history.pushState('', '', 'enter_here_your_url');
$("body").load("enter_here_your_page_url");
答案 1 :(得分:0)
您可以在.htaccess
中使用mod_rewrite来从/<user>/dir/?p=dashboard/
到/app/dir/index.php
内进行内部重写-我认为这是实际的终点,而不是/app/dir/
-这将需要mod_dir发出DirectoryIndex的辅助子请求。
我假设<user1>
可以由任何单词字符组成,包括连字符。换句话说,a-z
,A-Z
,0-9
,_
(下划线)和-
(连字符)。
例如:
Options -MultiViews
RewriteEgnine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} ^p=dashboard$
RewriteRule ^\w+/dir/$ /app/dir/index.php [L]
您可以通过检查PHP中的<user1>
变量来提取$_SERVER['REQUEST_URI']
(第一个URL路径段)。