.htaccess RewriteRule for multiple parameters added in javascript as non slash
.htaccess RewriteRule for multiple parameters added in javascript as non slash
这个问题可能是重复的。但是我没有找到解决问题的方法。我尝试将 RewriteRule 添加到 htaccess 文件,该文件将结合斜杠静态参数和 window.history.replaceState( {} , '', '');
在 javascript 中为所选过滤器添加的非斜杠参数。
我有两个名为 'p' 和 'a' 的静态参数。为此,我写了规则:
RewriteRule ^/?([0-9a-zA-Z\_\-]*)/([0-9a-zA-Z\_\-]*)$ index.php?p=&a= [NC,L]
。
但我需要为友好 url 添加非斜杠参数,这将仅在 js 中创建并用于历史中的后退操作。我希望 url 看起来像:
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=&a= [L,NC,QSA]
有效!
您可以在规则中使用 QSA
标志,将原始规则的任何现有查询字符串与您自己创建的规则合并。
https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa:
When the replacement URI contains a query string, the default behavior of RewriteRule is to discard the existing query string, and replace it with the newly generated one. Using the [QSA] flag causes the query strings to be combined.
这个问题可能是重复的。但是我没有找到解决问题的方法。我尝试将 RewriteRule 添加到 htaccess 文件,该文件将结合斜杠静态参数和 window.history.replaceState( {} , '', '');
在 javascript 中为所选过滤器添加的非斜杠参数。
我有两个名为 'p' 和 'a' 的静态参数。为此,我写了规则:
RewriteRule ^/?([0-9a-zA-Z\_\-]*)/([0-9a-zA-Z\_\-]*)$ index.php?p=&a= [NC,L]
。
但我需要为友好 url 添加非斜杠参数,这将仅在 js 中创建并用于历史中的后退操作。我希望 url 看起来像:
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=&a= [L,NC,QSA]
有效!
您可以在规则中使用 QSA
标志,将原始规则的任何现有查询字符串与您自己创建的规则合并。
https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsa:
When the replacement URI contains a query string, the default behavior of RewriteRule is to discard the existing query string, and replace it with the newly generated one. Using the [QSA] flag causes the query strings to be combined.