.htaccess Mod重写相同格式,不同来源
目前正在为一家公司做一些URL重写,我正在努力让新的URL指向正确的文件 我无法访问CMS-页面以两种格式生成:.htaccess Mod重写相同格式,不同来源,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,目前正在为一家公司做一些URL重写,我正在努力让新的URL指向正确的文件 我无法访问CMS-页面以两种格式生成: website.com/pressleases.php?lang=EN website.com/page.php?pagename=About&lang=EN 我对每种格式都进行了重写,使其成为相同的所需格式(website.com/language/pagename): 格式1(website.com/pressleases.php) 格式2(website.com/page.
- website.com/pressleases.php?lang=EN
- website.com/page.php?pagename=About&lang=EN
RewriteRule ^([A-Za-z]+)/([0-9]+)/([a-zA-Z0-9_-]+)$ productSelection.php? groupid=$2&lang=$1 [L]
有没有什么方法可以对这两种URL类型使用相同的nice格式,但转发到它们的原始路径?我的重写结构是否不正确,从而阻止了这一点
非常感谢任何帮助 您可以尝试先对php文件执行
-f
检查,如果失败,请使用第二种格式:
# format 1
RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$
RewriteCond %{DOCUMENT_ROOT}/%2.php -f
RewriteRule ^/?([^/]+)/(.*)/?$ /$2.php?lang=$1 [L,QSA]
# format 2
RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$
RewriteCond %{DOCUMENT_ROOT}/%2.php !-f
RewriteRule ^/?([^/]+)/(.*)/?$ /page.php?pagename=$2&lang=$1 [L,QSA]
此外,您需要在第一个format1规则中对照实际请求进行检查:
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^\ \?\.]+)\.php\?lang=
RewriteCond %{QUERY_STRING} ^lang=(.*)$
RewriteRule ^(.*).php$ /%1/$1? [L]
# format 1
RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$
RewriteCond %{DOCUMENT_ROOT}/%2.php -f
RewriteRule ^/?([^/]+)/(.*)/?$ /$2.php?lang=$1 [L,QSA]
# format 2
RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$
RewriteCond %{DOCUMENT_ROOT}/%2.php !-f
RewriteRule ^/?([^/]+)/(.*)/?$ /page.php?pagename=$2&lang=$1 [L,QSA]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /([^\ \?\.]+)\.php\?lang=
RewriteCond %{QUERY_STRING} ^lang=(.*)$
RewriteRule ^(.*).php$ /%1/$1? [L]