mod_rewrite用于提供现有文件的新版本

时间:2011-02-16 22:41:08

标签: php apache mod-rewrite

我刚刚创建了一个中央动态脚本来替换一个充满静态文件的混乱文件夹。但是,我想保留旧的URL而不必删除这些文件。让我举个例子:

我有以下文件:

  1. /oldpages/projekt1/index.html
  2. /oldpages/projekt2/index.html
  3. /oldpages/projekt3/index.html
  4. 实际的新网址是:

    1. /newscript/script.php?name=projekt1
    2. /newscript/script.php?name=projekt2
    3. /newscript/script.php?name=projekt3
    4. 重写规则是:

      Options -MultiViews -Indexes +FollowSymLinks
      RewriteEngine On
      RewriteBase /
      RewriteRule ^oldpages/([A-Za-z0-9_\-]+)/(index.html)?$ /newscript/script.php?name=$1 [L,QSA]
      

      然而,每当我尝试访问http://mydomain.com/oldpages/projekt3/index.html时,它就会不断回馈旧文件。谷歌搜索后,每个人都说多视图可能是罪魁祸首,但显然,这并没有解决它。

      如果服务器上不存在该目录,则该规则有效,以下工作完美:

      Options -MultiViews -Indexes +FollowSymLinks
      RewriteEngine On
      RewriteBase /
      RewriteRule ^newpages/([A-Za-z0-9_\-]+)/(index.html)?$ /newscript/script.php?name=$1 [L,QSA]
      

      http://mydomain.com/newpages/projekt3/index.html获得了正确的页面。

      我做错了什么?

      非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果.htaccess中的/oldpagesRewriteEngine On,则会覆盖.htaccess/中的所有规则。