【发布时间】:2012-10-19 14:20:45
【问题描述】:
目前正在为一家公司进行一些 URL 重写,我正在努力让新的 URL 指向正确的文件。
我无权访问 CMS - 页面以两种格式生成:
- website.com/pressReleases.php?lang=EN
- website.com/page.php?pagename=About&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 类型使用相同的格式,但转发到它们的原始路径?我的重写结构是否不正确,从而阻止了这种情况发生?
非常感谢任何帮助!
【问题讨论】:
标签: .htaccess mod-rewrite url-rewriting