Apache重写规则用连字符替换下划线并在末尾附加扩展名

时间:2012-11-02 06:28:44

标签: apache mod-rewrite

我需要帮助才能创建apache重写规则。我的要求如下:

来源网址:“http:// localhost / directory / file_name_1”

目标网址:“http://localhost/file-name-1.html”

注意:上述要求不适用于静态URL,但可以使用任何其他单词而不是“directory”和“file_name_1”。

  • 应在新的重定向网址
  • 中删除“目录”字样
  • 下划线(_)应替换为连字符( - )
  • “file-name-1”应以.html扩展名结束。

感谢您的回复。

2 个答案:

答案 0 :(得分:0)

试试这个

RewriteEngine On
RewriteRule ^(/?.*/[^/]*?)_([^/]*?_[^/]*)$ $1-$2 [N]
RewriteRule ^(/?.*/[^/]*?)_([^/_]*)$ $1-$2 [R=301]

答案 1 :(得分:0)

我使用了以下规则,现在它正在运作。

    RewriteEngine    On
    RewriteCond     %{REQUEST_URI}  !^/([A-Za-z0-9]+)/([A-Za-z0-9_]+)$
    RewriteRule     .*    - [S=3]
    RewriteRule     ^(/?.*/[^/]*?)_([^/]*?_[^/]*)$ $1-$2 [N]
    RewriteRule     ^(/?.*/[^/]*?)_([^/_]*)$ $1-$2.html  [NC]
    RewriteRule     ^/(.*)/(.*)$        $2               [R,L]