Apache Mod将旧URL模式重写为新URL模式

时间:2014-03-13 14:38:57

标签: apache .htaccess symfony mod-rewrite apache2

我是Apache Mod Rewrite的新手,我需要帮助来编写规则:

旧模式:

/{category_id}/{from}/{category_slug}-{page}/{id}/detail-{slug}

新模式:

/{category_id}-{from}-{category_slug}/{id}-{slug}

参数的REGEX规则是:

    id:             \d+
    category_id:    \d+
    slug:           "^[a-z0-9-]+"
    category_slug:  "^[a-z0-9-]+"
    from:           "^[a-z0-9-]+"
    page:           \d+

我需要编写.htaccess规则来自动将旧模式URL重定向到具有永久重定向301的新模式URL。

示例 旧网址:

/2/categorie/tables-bureaux-1/213/detail-secretaire-des-annees-60-domino

预期的新网址

/2-categorie-tables-bureaux/213-detail-secretaire-des-annees-60-domino

目前,我已经尝试了这一点,但它不起作用:

RewriteCond %{THE_REQUEST} /([0-9]+)/([a-z0-9-]+)/([a-z0-9-]+)-([0-9]+)/([0-9]+)/detail-([a-z0-9-]+) [NC]
RewriteRule /%1-%2-%3/%5-%6$ [R=301,L]

我使用的PHP Symfony2框架已经有了这个.htaccess规则 - 所以我不知道在哪里写新的:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

尝试这个简化的规则:

RewriteCond %{THE_REQUEST} /([0-9]+)/([a-z0-9-]+)/([a-z0-9-]+)-([^-]+)/([0-9]+)/detail-([^\s?]+) [NC]
RewriteRule ^ /%1-%2-%3/%5-%6? [R=301,L,NE]

确保此规则在主.htaccess文件中设置为非常第一规则

相关问题