2011-02-24 89 views
0

我花了最後3個小時試圖弄清楚這個問題,但總有一部分不起作用,所以如果有人能幫助我,我會非常感激。代碼點火器中的htaccess和路由問題

即時通訊工具試圖在htaccess中實現的是: 刪除尾部斜線並強制執行www。

因此,這些例子4需要表現出同樣的結果:

#1. www.mysite.com/products/show/ 
#2. www.mysite.com/products/show 
#3. mysite.com/products/show/ 
#4. mysite.com/products/show 

他們都需要顯示#2,因爲這是正確的。

有很多的例子和解決方案,做到這一點,我得到它的工作,但!即時通訊也使用此控制器上的路線,看起來像這樣: $ route ['products /(:any)'] =「products/show/$ 1」;

再一次,它是所有的工作,無論是htaccess和路線,問題出現時(:any)包含一個斜線,例如foo-bar。然後突然#3失敗,該網站只是沒有加載和一些奇怪的原因url更改爲www.domain.tld/products/foo-bar(是的,它實際上打印出domain.tld,即時消息不使用它作爲一個這個域當然不是有效的域)

下面是我目前在我的htaccess中,請記住,對於www的執行,我不能!硬編碼實際的域名,因爲會有多個域指向這個文檔根目錄,全部使用同一個腳本構建。

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/



#RewriteRule ^(welcome(/index)?|index(\.php)?)/?$/[L,R=301] 
RewriteCond $1 !^(index\.php|images|doc) 
RewriteRule ^(.*)/index/?$ $1 [L,R=301] 

# Removes trailing slashes (prevents SEO duplicate content issues) 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ $1 [L,R=301] 

# Enforce www 

RewriteCond %{HTTP_HOST} ^([^.]+)\.([^.]+)$ [NC] 
RewriteRule ^(.*)$ http://www.%1.%2/$1 [R=301,L] 

感謝您的幫助,

傑森

回答

0

WWW問題:也許你需要爲mysite.com CNAME記錄指向www.mysite.com?這是我對給定信息的最佳猜測。

URI路由:請記住,當/ products /(:any)中包含斜線(:任意)時,路由不再是/ products /(any)..它是/ products /(any) /(something_else)。這是作爲您網址的另一個細分受衆羣處理的。

如果斜線不是路由的一部分,您將無法在網址中使用斜線的內容。如果您只是需要在URL中傳遞的信息,您可以進行某種編碼/解碼。

至於爲什麼它路由到domain.tld,我不知道。 :)

+0

感謝您的回覆drewjoh,我會問我的主人,看看他們能否爲我解決這個問題。儘管如此,仍然在尋找htaccess解決方案。 – Jason 2011-02-24 18:01:12

+0

爲我更新了我的答案。希望它有一點幫助。 – drewjoh 2011-02-24 18:35:08

+0

謝謝,我現在已經刪除了路由,並且正在使用__remap,而且仍然存在相同的問題。我只是發送一個請求到我的主機來看看,也許添加cname。謝謝你的幫助! – Jason 2011-02-25 14:16:41