我一直试图制作我的网站的移动版本,并使用htaccess文件重定向用户。
我的网站之前使用重写规则来清理网址,效果很好。当我尝试执行完全相同的规则但重定向到mobile.php而不是index.php时,我得到500内部服务器错误。
以下是代码:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} #detect mobile browsers here...
RewriteRule ^([^/]*)[/]*([^/]*)$ /mobile.php?r=$1&id=$2 [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^/]*)[/]*([^/]*)$ /index.php?r=$1&id=$2 [L]
有人能看到我的问题吗?
答案 0 :(得分:0)
是的 - 您发布的这一行无效,原因如下:
RewriteCond %{HTTP_USER_AGENT} #detect mobile browsers here...
评论#detect mobile browsers here...
只能是一行中的第一个非空字符 - 评论不能从该行的中间开始。
由于#1,这条线是不完整的 - 它应该有“条件模式”部分,它缺少(你有评论)。有关完整/正确的语法
你可能进入这条规则的重写循环(很多人忘记了在mod_rewrite重写之后,它进入另一次迭代,如果你没有插入适当的额外条件( RewriteCond)它可能永远循环 - 实际上Apache会在达到极限后将其破坏,但重点仍然存在)。
答案 1 :(得分:0)
虽然我不确定第一个代码的问题是什么,但我已经想出了一些可以实现我想要实现的目标。
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index.php$ [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
RewriteRule ^([^/]*)[/]*([^/]*)$ /mobile.php?r=$1&id=$2 [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
RewriteRule ^([^/]*)[/]*([^/]*)$ /mobile.php?r=$1&id=$2 [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^/]*)[/]*([^/]*)$ /index.php?r=$1&id=$2 [L]
这是好习惯吗?我很陌生(显然)。