2012-11-11 50 views
0

我有這兩個規則:ModRewrite htaccess的送我的完整路徑

RewriteCond %{HTTP_USER_AGENT} iPhone [NC] 
RewriteRule ^categories$ home.php?categories=1[L,NC,PT,R=301] 
RewriteRule ^featured$ home.php?featurez=1 [L,NC,PT,R=301] 

的問題是,德類別的運作和功能不工作。 作品:

http://apps.com/iphone/categories 

不工作:

http://apps.com/iphone/featured 

第二條規則是不工作把我送到了這裏

http://apps.com/var/www/vhosts/apps.com/httpdocs/iphone/home.php?featurez=1 

這似乎給我我的根目錄的根整個事情都以我的網站的根爲前綴。爲什麼?

這怎麼可能。

+0

你爲什麼不人開始看日誌? mod_rewrite帶來了兩個命令:'RewriteLog'和'RewritelogLevel',將日誌級別設置爲7,並看看它在發出請求時在重寫引擎內部發生了什麼。該手冊是優秀的,我建議你閱讀手冊:http://httpd.apache.org/docs/current/mod/mod_rewrite.html – arkascha

+0

我知道調試的方式..但它does not幫助..我可以看看它在上面做什麼..它停在重定向的中間..我還沒有訪問我的服務器上的Apache –

+0

你有沒有訪問您自己的系統上的服務器?但是你說你可以評估日誌?奇怪......地球上「停在中間」是什麼意思?請張貼重寫日誌文件的摘錄。 – arkascha

回答

1
  1. 重寫條件只適用於緊隨其後的規則,所以你的情況不適用於「精選」規則可言。你必須複製它。
  2. Apache嘗試猜測規則的目標是URL路徑還是文件路徑,並且它的猜測是錯誤的。您可以嘗試通過包括重寫基礎或使目標絕對URL路徑來修復它。

我已經在your previous question中回答了這個問題,使用其中任何一種解決方案都可以修復出現在重定向中的文件路徑。

RewriteBase /iphone/ 
RewriteCond %{HTTP_USER_AGENT} iPhone [NC] 
RewriteRule ^categories$ home.php?categories=1[L,NC,PT,R=301] 
RewriteCond %{HTTP_USER_AGENT} iPhone [NC] 
RewriteRule ^featured$ home.php?featurez=1 [L,NC,PT,R=301] 

RewriteCond %{HTTP_USER_AGENT} iPhone [NC] 
RewriteRule ^categories$ /iphone/home.php?categories=1[L,NC,PT,R=301] 
RewriteCond %{HTTP_USER_AGENT} iPhone [NC] 
RewriteRule ^featured$ /iphone/home.php?featurez=1 [L,NC,PT,R=301] 
+0

在這兩種情況下..http://apps.com/iphone/featured給我404 –

+0

@DmitryMakovetskiyd是/ iphone /目錄中的htaccess文件?或你的文檔根? –

+0

裏面的iPhone目錄..我試圖應用許多解決方案..我也閱讀如何調試規則......並記錄模塊重寫..這是什麼讓我感到困惑:apps.com/var/www/vhosts /apps.com/httpdocs/iphone/home.php?featurez=1 它的一部分是我的網站根目錄,另一部分是我的完整目錄。爲什麼會發生?爲什麼會有這樣的混合.. Apache似乎沒有完成重寫過程 –