2011-09-06 63 views
2

我有一箇舊的網站,我已經接管。新用戶基本上獲得爲他們創建的自定義頁面。這是以一種不太好的方式完成的。目前它實際上會爲所創建的slug URL生成一個名爲文件的文件,並以符號方式將其鏈接到名爲「/ main /」的文件夾。顯然我想改變這一點。我的計劃只是讓它通過.htaccess將不存在的文件夾重定向到「/ main /」。目前這是我的.htaccess的樣子:mod_rewrite的重定向不存在的URL的

RewriteEngine on 
RewriteCond $1 !^(index\.php|images|robots\.txt|index\.htm) 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /main/ [L] 

但是,這會生成重定向循環。我錯過了什麼?

編輯

關於這一點,我意識到,我應該說我希望它保持路徑的輸入。例如,如果我把http://www.mydomain.com/test_person它應該保持該地址,但如果有意義的話,將所有內容轉發到主文件夾。

+0

這是我真的需要幫助。任何幫助將不勝感激。我將我的頭撞在牆上以弄清楚。 – LoneWolfPR

回答

3

你會希望你的規則不重寫URL,以便與主已經開始沒有它循環,例如:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !^main/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^[^/]+/(.*)$ /main/$1 [L] 

[L]並不真正意味着你會想到什麼[L]應該指的是.htaccess文件的上下文。

您應該能夠從REQUEST_URI環境變量中獲取請求的原始url,但常見的做法是將slug作爲GET變量傳遞給目標。

RewriteRule ^([^/]+)/(.*)$ /main/$2?user=$1 [QSA,L] 

或者通過一切它解釋URL,並找到正確的內容返回一個腳本:

RewriteRule ^([^/]+)/(.*)$ /main/index.php?user=$1&path=$2 [QSA,L] 
+1

我意識到我的循環問題是在PHP的其他地方,但因爲這是一個很好的答案,我會繼續並獎勵賞金。 – LoneWolfPR