htaccess重定向

时间:2011-07-05 08:28:23

标签: .htaccess rewrite

好的我的项目是将旧的静态网站变成动态网站。旧网站大约有40页。

目前新格式将采用2种语言,未来还有更多可能。

实际上有两组网址:

  1. 基本的:/ index.html,/ about.html,/ contact.html
  2. 其余:/ folder1 / page1.html,/ folder1 / page2.html,/ folder3 / page3.html等
  3. 客户希望第二种语言与默认语言具有相同的模式:

    1. 基本的:/language/index.html,/language/about.html,/language/contact.html
    2. 其余:/language/folder1/page1.html,/language/folder1/page2.html,/language/folder3/page3.html等
    3. 我可以用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,则失败

1 个答案:

答案 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不被视为可接受的语言)。