带有字符的URL重定向 - 在HTACCESS中

时间:2017-05-29 22:37:40

标签: .htaccess url redirect mod-rewrite character

我需要通过.htaccess重定向带有连字符的多个网址。

以下是当前的.htaccess文件:

RewriteEngine On
RewriteBase /

RewriteRule ^index\.php$ - 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
RewriteRule ^/([0-9]+).*$ /$1/ [R,L]

以下是我尝试重定向的网址格式示例:

http://www.example.com/52346-3/

应该重定向到

http://www.example.com/52346/

我是.htaccess的新手,似乎无法让最后一行完全正确。

1 个答案:

答案 0 :(得分:2)

RewriteRule ^/([0-9]+).*$ /$1/ [R,L]

此重定向需要接近.htaccess文件的开头,现有的重写之前。您还需要从RewriteRule 模式中删除斜杠前缀,否则它将永远不会在目录(.htaccess)上下文中匹配。

因此,假设您只想在第一组数字(包括连字符)后删除所有内容,请尝试以下内容:

RewriteRule ^(\d+)- /$1/ [R,L]

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

\d[0-9]的速记字符类。 .*$与根本不包括尾随模式相同。

我还添加了L标记 - 对第二个RewriteRule很重要。

更新:RewriteRule 模式的末尾添加了连字符,以明确匹配连字符(并避免重定向循环)。