使用 .htaccess 代码将下划线替换为 URL 中的连字符时跳过子目录


skip subdirectory when replacing underscore to hyphen from urls using .htaccess code

出于SEO目的,我必须从URL中将_(下划线)替换为-(连字符)。我有数百个文件,所以我无法一个接一个地更改文件名。所以我写了一些.htaccess代码来做到这一点。

这是我正在使用的代码。

RewriteRule ^([^_]*)_(.*)$ /$1-$2 [R=301,L] 

它成功地将我的网址从下划线更改为连字符。

现在我有一个名为"管理员"的子目录,我不希望这个目录网址从下划线替换为连字符。

所以我想跳过这个目录的网址来跳过.htaccess代码。

请帮助我如何跳过这个。

谢谢!

您也可以单独排除:

RewriteCond %{REQUEST_URI} !^/administrator/
RewriteRule ^([^_]*)_(.*)$ /$1-$2 [R=301,L] 

如果您需要排除多个目录,则更容易,因为只需要再次添加相同的行。

您可以使用负前瞻

RewriteRule ^(?!administrator/)([^_]*)_(.*)$ /$1-$2 [R=301,L,NC]

这将从此规则中跳过/administrator/子目录。