我在我的网站上编辑了所有网址,示例是下面的一个(它不必在calipers目录下)(下划线的数量也是不恒定)
的.com /卡尺/ Insize_1108_1_2
到
的.com /卡尺/ INSIZE-1108年1月2日
所以在网址中只更改了1个字符,我该如何修改.htaccess?
目前我的htaccess不包含除我的cms默认设置以外的任何内容。
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
编辑:这是我尝试过的,但是没有用。
RewriteRule ^([^/]+)[_]([^/]+)$ $1-$2 [R=301,L]
答案 0 :(得分:0)
RedirectMatch 301 (/Calipers/Insize)_(\d+)_(\d+)_(\d+)$ $1-$2-$3-$4
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
尚未经过测试,
另见:htaccess regex directory to variable
您的正则表达式^([^/]+)[_]([^/]+)$
与您的网址不匹配“.com / Calipers / Insize_1108_1_2”
使用^
标记字符串的开头。从最后看起来不要触及开头会更好。
这导致
RewriteRule ^(.*)_(\d+)_(\d+)_(\d+)$ $1-$2-$3-$4 [R=301,L]
与我的第一个解决方案没什么不同。
它将末尾的三个数字分组(每个数字为(\d+)
)并将其余数字直到开始(使用(.*)
)。