我需要通过.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
的新手,似乎无法让最后一行完全正确。
答案 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
模式的末尾添加了连字符,以明确匹配连字符(并避免重定向循环)。