浏览其他路径而不更改浏览器URL

时间:2020-07-24 19:55:02

标签: php .htaccess url-rewriting

我有一个托管在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不存在

2 个答案:

答案 0 :(得分:0)

如果您只想更改网址而不刷新页面:
此方法是纯javascript

window.history.pushState('', '', 'enter_here_your_url');

如果要加载页面而不刷新页面:
这是JQuery

$("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-zA-Z0-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路径段)。