2015-08-14 50 views
0

我有一個網址,可以說它的blog.art.ca/Customer/AAAABBBB/index.html ,我想隱藏Customer和AAAABBBB。現在AAAABBBB可以是任何8個字符的字母數字代碼。Mod_Rewrite不斷變化的網址

Options +FollowSymLinks -Multiviews -Indexes 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^Customer/(.*)$ /$1 [L,R] 
</IfModule> 

我試過無數的事情,但是,我要麼得到ERR_TOO_MANY_REDIRECTS或者它只是導致服務器崩潰。我們歡迎所有的建議!

+0

「我想隱藏客戶**和AAAABBBB **」?我沒有看到上面的代碼如何創建一個重定向循環?當你說「導致服務器崩潰」 - 字面上?!你會得到什麼錯誤? – MrWhite

+0

具體來說,它實際上只是說服務器似乎崩潰了。我是HostPapa的新手,所以我不確定要如何澄清它。我不確定上面的代碼是否做了重新調試,因爲我從來沒有處理過mod_rewrite,而且我找不到任何解釋如何處理這些更改代碼的事情,這是我發現的至少處理客戶文件夾 –

回答

2

你仍然需要允許請求達到實際所需的資源,所以你需要兩套規則,一個瀏覽器,以顯示新的短網址(301永久性重定向),以及第二組到撤銷這個映射回到原始URL,以便Apache可以找到合適的東西來服務,例如。

RewriteBase/

# Remove Customer/AAAABBB from the URL shown in the browser. 
RewriteCond %{QUERY_STRING} !customer= 
RewriteRule ^Customer/([^/]+)/(.*) /$2?customer=$1 [L,QSA,R=301] 

# Internally undo any masked rewrites. 
RewriteCond %{QUERY_STRING} customer=([^&]+) 
RewriteRule (.*) /Customer/%1/$1 [L] 
+0

我試圖按原樣使用它,並且它返回了500(內部服務器錯誤),但是它正在重寫URL。通常,該網址與custom.company.ca/Customer/AAAABBBB/index.html匹配,現在該鏈接將變爲custom.company.ca/index.html?customer=AAAABBBB。 –

+0

因此,第一條規則按預期工作,/ Customer/Aaaaabbbb /不再位於URL中(隱藏),但現在作爲CGI變量傳遞。可以通過簡單的調整來製作一個完全不可見的Cookie。無論如何,500錯誤將落實到第二條規則的實施中,從而創建一個與您的後端預期不匹配的URL。 – arober11

+0

我試圖對第二部分進行大量更改以使其工作,並遇到了現在似乎忽略.htaccess文件的問題。我確實相信你提交的答案是正確的,我顯然不能可靠地實施它。 –