Regex htaccess从友好url重定向到带有参数的url
我试图创建一个重写规则,将访问者从一个url重定向到Ecwid存储上的另一个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]
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]