目前正在为一家公司进行一些 URL 重写,我正在努力让新的 URL 指向正确的文件。
我无权访问 CMS - 页面以两种格式生成:
- website.com/pressReleases.php?lang=EN
- website.com/page.php?pagename=关于&lang=EN
我对每种格式都使用了重写,以使它们成为相同的所需格式(website.com/language/pagename):
格式 1 (website.com/pressReleases.php)
RewriteCond %{QUERY_STRING} ^lang=(.*)$
RewriteRule ^(.*).php$ /%1/$1? [L]
格式 2 (website.com/page.php?pagename=About&lang=EN)
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /page.php
RewriteCond %{QUERY_STRING} pagename=([^&]+)&lang=([^&]+)
RewriteRule ^page.php$ /%2/%1? [R=301,L]
问题是两种格式重写的输出相同,但源文件/路径不同。当我创建另一个重定向以将漂亮的 URL 转发到实际源时,它适用于两者:
RewriteRule ^([A-Za-z]+)/([0-9]+)/([a-zA-Z0-9_-]+)$ productSelection.php? groupid=$2&lang=$1 [L]
有什么方法可以对两种 URL 类型使用相同的格式,但转发到它们的原始路径?我是否错误地构造了我的重写以防止这种情况发生?
非常感谢任何帮助!