我是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]
感谢您的帮助。
答案 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文件中设置为非常第一规则。