Regex htaccess从友好url重定向到带有参数的url

Regex htaccess从友好url重定向到带有参数的url,regex,apache,.htaccess,mod-rewrite,rewrite,Regex,Apache,.htaccess,Mod Rewrite,Rewrite,我试图创建一个重写规则,将访问者从一个url重定向到Ecwid存储上的另一个url,但我似乎无法获得正确的语法 我想从以下位置重定向访问者: http://domain.ca/category/####### 到 我尝试了以下几种变体,但都会生成500个内部服务器错误 Rewrite Rule ^/category/(.*)$ http://domain.ca/products/#!/~/category/id=$1&offset=0&sort=normal [R=301,L]

我试图创建一个重写规则,将访问者从一个url重定向到Ecwid存储上的另一个url,但我似乎无法获得正确的语法

我想从以下位置重定向访问者:

http://domain.ca/category/#######

我尝试了以下几种变体,但都会生成500个内部服务器错误

Rewrite Rule ^/category/(.*)$ http://domain.ca/products/#!/~/category/id=$1&offset=0&sort=normal [R=301,L]
Rewrite Rule ^/category/(.*)$ http://domain.ca/products/#\!/~/category/id\=$1&offset\=0&sort\=normal [R=301,L]
Rewrite Rule ^/category/(.*)$ /products/#\!/~/category/id\=$1&offset\=0&sort\=normal [R=301,L]
Rewrite Rule ^/category/(.+)$ http://domain.ca/products/#!/~/category/id=$1&offset=0&sort=normal [R=301,L]
下面是htaccess文件中现有的重写,使用下面的anubhava示例

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteRule ^category/(.+)$ /products/#!/~/category/id=$1&offset=0&sort=normal [R=301,L,NE]
</IfModule>

重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
重写规则^category/(.+)$/产品/#/~/类别/id=$1,偏移量=0,排序=normal[R=301,L,NE]

您有语法问题。使用此规则:

RewriteEngine On
RewriteBase /

RewriteRule ^category/(.+)$ /products/#!/~/category/id=$1&offset=0&sort=normal [R=301,L,NE]

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

这将我从domain.ca/category/4619309重定向到domain.ca/4619309。我已经编辑了原始帖子,以包含htacesss的全部内容,以防与现有规则发生冲突。在一个有点相关的注释上,L,NE代表什么?现在尝试更新代码
NE
标志表示
无转义
以避免转义目标URI中的特殊字符。谢谢,编辑的版本可以工作!(.+)$代表什么?我猜可以取任意数量的字符并将它们转储到$variable中?是的,这是正确的
(.+)
被称为捕获组,以后将其用作
$1
RewriteEngine On
RewriteBase /

RewriteRule ^category/(.+)$ /products/#!/~/category/id=$1&offset=0&sort=normal [R=301,L,NE]

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]