2012-11-11 116 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似乎没有完成重写过程 –