如何使用htaccess从url中删除客户端ID?

时间:2012-09-28 13:57:55

标签: php .htaccess routing

我正在创建像:

这样的网址

http://domain.com/app/ clientID的 /控制器/ 要么 ../应用程序/的 clientID的 /filename.ext

我需要从网址中删除字母数字clientID。

我目前的htacces是:

  

RewriteRule ^ app /([a-z0-9] +) /(。)$ / app / $ 2 [NC,L]

它通过了htaccess测试人员,但我在网上得到了404错误。

示例:http://domain.com/app/gmcpoujth7/js/fancybox/jquery.fancybox-1.3.4.pack.js

我做错了什么?

1 个答案:

答案 0 :(得分:0)

这是一个双面问题。

  1. 您想从网址
  2. 中删除clientID
  3. 您希望脚本仍可使用
  4. 为了使其工作,您还需要添加重写脚本来告诉您的文件访问文件的位置。这有点棘手,可能需要比htaccess更多的工作。

    由于网址正在被重写和重定向,因此您需要通过某种方式将该网址重定向到当前的clientID。这是棘手的部分。您可以添加以下行来设置cookie:

    RewriteRule ^app/([a-z0-9]+)/(.)$ /app/$2 [co=clientID:$1:.yourserver.com:7200:/,NC,L]
    

    然后在第二个调用中,您将执行如下所示的本地重写:(未测试)

    RewriteCond %{HTTP_COOKIE} ^.*clientID=([a-z0-9]+).*$ [NC]
    RewriteRule /app/$ /app/$1/$2 [QSA]
    

    这不是一个完整的答案,因为如果有人只是前往:http://domain.com/app/js/fancybox/jquery.fancybox-1.3.4.pack.js而没有先找到clientID的网址,服务器可能不知道在有多个网址的情况下将其发送到哪里clientID。最好的办法是保持clientID完好无损。