使用.htaccess代码从url替换下划线到连字符时跳过子目录

时间:2015-01-05 11:39:15

标签: php .htaccess url redirect directory

我必须用 - (连字符)替换来自网址的 - (连字符)用于搜索引擎优化目的。我有数百个文件,因此我无法逐个更改文件名。所以我写了一些 .htaccess 代码来做那件事。

这是我正在使用的代码。

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

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

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

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

请帮我怎么跳过这个。

谢谢!

2 个答案:

答案 0 :(得分:1)

您也可以单独排除:

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

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

答案 1 :(得分:0)

您可以使用否定前瞻

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

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