如何在不更改浏览器中的 URL 的情况下使用 htaccess 进行重定向

Posted

技术标签:

【中文标题】如何在不更改浏览器中的 URL 的情况下使用 htaccess 进行重定向【英文标题】:how to redirect with htaccess without changing the URL in browser 【发布时间】:2013-07-26 09:11:11 【问题描述】:

我有一个普通的动态网址,我希望它使 SEO 友好,如下所示

我的网址是

domain.com/search.php?v1=mobiles&v2=nokia

domain.com/search/mobiles/nokia

请帮忙

【问题讨论】:

【参考方案1】:

您需要使用 .htaccess 文件来执行此重写操作,而无需在浏览器中更改 url, 试试下面的代码

RewriteEngine On  #remove this if already added
RewriteRule ^search/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$    search.php?s1=$1&s2=$2    [NC,L] 

【讨论】:

【参考方案2】:

我会这样做:

RewriteEngine On  #if not already on. 
RewriteCond %REQUEST_FILENAME !-f #only if it is not calling a file that actually exists
RewriteCond %REQUEST_FILENAME !-d #only if it is not calling a directory that actually exists.
RewriteRule ([a-z0-9]+)(/*)([a-z0-9]*)(/*)([a-z0-9]*)(/*) search.php?v1=$1&v2=$3 [L,NC,QSA]

即使你只去 /mobile/ 这也能工作(假设你的 search.php 可以处理。)

HTH

【讨论】:

以上是关于如何在不更改浏览器中的 URL 的情况下使用 htaccess 进行重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何在不更改浏览器历史记录的情况下更改 url

在不更改 url 的情况下访问脚本

如何在不重新加载页面的情况下更改 URL?

如何在不更改 Vue 中的 url 的情况下返回 404 错误?

如何在不重新加载的情况下更改浏览器栏网址

如何在不更改 javascript 中的 URL 的情况下重新加载当前页面一次?