。htaccess RewriteRule用于在JavaScript中以非斜杠添加的多个参数

问题描述 投票:0回答:1

此问题可能是重复的。但是我没有找到解决问题的办法。我尝试将RewriteRule添加到htaccess文件中,该文件将将斜线静态参数与window.history.replaceState( {} , '', '');在javascript中为所选过滤器添加的非斜线参数相结合。我得到两个名为“ p”和“ a”的静态参数。为此,我编写规则:

RewriteRule ^/?([0-9a-zA-Z\_\-]*)/([0-9a-zA-Z\_\-]*)$ index.php?p=$1&a=$2 [NC,L]

但是我需要为友好的URL添加非斜线参数,这些参数只能在js中创建,并用于历史记录中的后退操作。我想要的网址看起来像:

www.page.com/category/pen.html?colour=green

并且应该是不友好的:

www.page.com/index.php?p=category&a=pen&colour=green

并且参数'a'之后的参数可能很多,但应该在.html扩展名之后。

到目前为止,我尚未找到任何解决方案。感谢您的帮助。

编辑

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?example.com [NC]
RewriteRule ^admin/?$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9\-]+)(/([A-Za-z0-9\-\,]+))?$ /index.php?p=$1&a=$3 [L,NC,QSA]

行得通!

javascript .htaccess url mod-rewrite friendly-url
1个回答
0
投票

您可以在规则中使用QSA标志,以将原始规则的任何现有查询字符串与您自己创建的查询字符串合并。

https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa

当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志会使查询字符串组合。

© www.soinside.com 2019 - 2024. All rights reserved.