2012-09-28 66 views
1

我創建的網址,如:如何使用htaccess從網址中刪除客戶端ID?

http://domain.com/app/clientID的 /控制器/ 或 ../app/ clientID的 /filename.ext

我需要從URL中移除字母clientID的。

我的當前htacces是:

重寫規則^應用程序/([A-Z0-9] +)/(。)$ /應用/ $ 2 NC,L]

它通過htaccess測試儀,但我在網絡中得到404錯誤。

樣品:http://domain.com/app/gmcpoujth7/js/fancybox/jquery.fancybox-1.3.4.pack.js

我在做什麼錯?

+0

你在apache show中的錯誤日誌是什麼?看看它知道它正試圖訪問時,正在嘗試訪問的路徑404 – Salketer

+0

是否有一個js文件在app/js/fancybox /名爲jquery.fancybox-1.3.4.pack.js? ...只是要求確保 – SinistraD

+0

是文件存在。 看着錯誤日誌。 文件不存在:/home/npxxx/domains/domain.com/public_html/app/clientID – user409366

回答

0

這是一個雙面問題。

  1. 你想從URL
  2. 你想刪除clientID劇本還在努力

爲了這個工作,你還需要添加一個重寫劇本要告訴你的文件,其中訪問文件。這有點棘手,可能需要比htaccess更多的工作。

由於url正在被重寫和重定向,您將需要一些方法將該url重定向到當前的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完好無損。

+0

我認爲最好爲所有客戶端提供sepperate URL。我只需要重新路由文件和控制器。 – user409366

+0

就像我說的,除非你有其他方法來控制'clientID',否則幾乎是不可能的。這可能是一個post/get變量,cookie或其他項目。如果不知道客戶端的訪問方式,別無選擇,只能將其留在那裏。 –

+0

問題是,所有的客戶端都使用相同的內核。因此,控制器和文件需要與地址欄上的不同url相同。 – user409366