代码之家  ›  专栏  ›  技术社区  ›  andres descalzo

在Apache2中使用“重写”时出现问题

  •  0
  • andres descalzo  · 技术社区  · 14 年前

    我有以下要重写的URL列表:

    1写入URL
    /产品/ 客户机 /

    发送到
    /basedir/system/index.php?客户= 顾客

    2写入URL
    /产品/ 客户机 索引,PHP

    发送到
    /basedir/system/index.php?客户= 顾客

    3写入URL
    /产品/ 客户机 /图片/dir2/myimage.jpg

    发送到
    /basedir/系统/图像/ 客户机 /目录2/myimage.jpg

    4写入URL
    /产品/ 客户机 /image/dir2/更多\u x \u dir/other.img

    发送到
    /basedir/系统/图像/ 客户机 /dir2/更多\u x \u dir/other.img

    根据这些规则,我或多或少地解决了第1点和第2点:

     RewriteEngine On
    
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
    
     RewriteRule ^product/([a-zA-Z]+)$ /basedir/system/index.php?client=base=$1 [L,QSA]
     RewriteRule ^product/([a-zA-Z]+)/$ /basedir/system/index.php?client=base=$1 [L,QSA]
     RewriteRule ^product/([a-zA-Z]+)/(.*)$ /basedir/system/index.php?client=$1 [L,QSA]
    

    我的问题是在案例3和4中,当我使用css/image的/js文件时。而且当我有很多目录的时候,可能在很多目录的情况下,必须为每个人制定一个规则,但是我不知道怎么做。

    非常感谢

    编辑

    我的解决方案基于接受的答案:

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^product/([a-zA-Z]+)/(.*)\.(gif|jpg|ico|css|js|txt|zip|xls|doc)$ /basedir/system/$2.$3 [L,QSA]
    RewriteRule ^product/([a-zA-Z]+)$ /basedir/system/index.php?database=$1 [L,QSA]
    RewriteRule ^product/([a-zA-Z]+)/$ /basedir/system/index.php?database=$1 [L,QSA]
    RewriteRule ^product/([a-zA-Z]+)/index.php$ /basedir/system/index.php?database=$1 [L,QSA]
    RewriteRule ^product/([a-zA-Z]+)/(.*)$ /basedir/system/$2?database=$1 [L,QSA]
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Tim Stone    14 年前

    我相信你想根据你的描述做如下的事情(我仍然对你目前的规则有点困惑)。我还假设您的文件夹名为 image , css js 对于每个客户。

    RewriteEngine On
    
    # Rewrite images/css/js to their real files
    RewriteRule ^products/([^/]+)/(image|css|js)/(.*)$ /basedir/system/$2/$1/$3 [L]
    
    # Rewrite everything else to the index.php script
    RewriteRule ^products/([^/]+)(/.+)?$ /basedir/system/index.php?client=$1 [QSA,L]