好的我的项目是将旧的静态网站变成动态网站。旧网站大约有40页。
目前新格式将采用2种语言,未来还有更多可能。
实际上有两组网址:
客户希望第二种语言与默认语言具有相同的模式:
我可以用htaccess重写的基本页面:
# default language
RewriteRule ^about.html$ about.php?language= [NC,L]
#other language
RewriteRule ^([^/]+)/about.html$ about.php?language=$1 [NC,L]
至于剩下的页面,我被卡住了。
在我的数据库中,我保存了现有的网址及其内容。
例如,对于基本语言:
/folder1/page1.html将由dynamicpage1.php提供?language =& url = / folder1 / page1.html
/folder2/page2.html将由dynamicpage1.php提供?language =& url = / folder2 / page2.html
/folder3/page3.html将由dynamicpage2.php提供?language =& url = / folder3 / page3.html
另一种语言:
/([^ /] +)/ folder1 / page1.html将由dynamicpage1.php提供?language = $ 1& url = / folder1 / page1.html
/([^ /] +)/ folder2 / page2.html将由dynamicpage1.php提供?language = $ 1& url = / folder2 / page2.html
/([^ /] +)/ folder3 / page3.html将由dynamicpage2.php提供?language = $ 1& url = / folder3 / page3.html
我如何构建这些规则?
如果我尝试:RewriteRule ^([^ /] +)/(。*)$ subservices.php?language = $ 1& url = $ 2,则失败
答案 0 :(得分:1)
您最好在URL重写规则中指定/列出可能的语言 - 它将更准确。这条规则很好:
RewriteRule ^((EN|FR)/)?(.*\.html)$ /subservices.php?language=$2&url=/$3 [NC,QSA,L]
或
RewriteRule ^((english|french)/)?(.*\.html)$ /subservices.php?language=$2&url=/$3 [NC,QSA,L]
将EN|FR
更改为您使用的任何语言。
/index.html
将被重写为/subservices.php?language=&url=/index.html
/FR/index.html
将被重写为/subservices.php?language=FR&url=/index.html
/folder1/page1.html
将被重写为/subservices.php?language=&url=/folder1/page1.html
/FR/folder1/page1.html
将被重写为/subservices.php?language=FR&url=/folder1/page1.html
/ZZ/folder1/page1.html
将被重写为/subservices.php?language=&url=/ZZ/folder1/page1.html
(ZZ不被视为可接受的语言)。