通过.htaccess从网址中删除尾随数字

时间:2013-01-31 21:26:23

标签: wordpress .htaccess mod-rewrite

我添加了这条规则

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

从WordPress网站上的网址中删除以连字符开头的尾随数字

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^(.*)-[0-9]+/$ /$1/ [L,QSA]
</IfModule>

但它似乎没有诀窍,对我来说正则表达式似乎没问题,但我认为它与其他规则冲突

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# Additional 2 lines to remove the trailing -Number from the URL
RewriteCond %{REQUEST_URI}  ^/(.*)-(?:[0-9]*)?/?$    [NC]
RewriteRule .*   %1        [R=301,L]

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

额外的2行永久重定向

http://example.com/any/number/of/folders/anything-NUMBER

要:

http://example.com/any/number/of/folders/anything

-NUMBER组合必须是URL中的尾随字符串,带或不带斜杠。

即使没有数字,连字符-也会被删除。如果你想保留它,请替换

RewriteRule .* %1 [R=301,L]

RewriteRule .* %1- [R=301,L]

永久重定向用于在浏览器的地址栏中显示替换URL。对于静默映射,请从[R = 301,L]中删除R=301

答案 1 :(得分:0)

RedirectMatch 301 ^(.*)-[0-9]+/?$ $1/