我目前在index.php
上有一个标准网络界面的网站,我在iphone.php
制作了一个适合iPhone的版本。
两个页面都处理相同的参数。
当我手动转到.../iphone.php
时,它可以正常工作,但我想在.../path/
和{{1}上重写任何内容}如果.../path/index.php
包含iphone.php
,则%{HTTP_USER_AGENT}
,并可选择添加查询字符串(不确定是否/何时需要添加)。
到目前为止,这就是我mobile
中的内容:
.../path/.htaccess
问题是,它与任何子文件夹中的RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.+mobile.+$ [NC]
RewriteRule index.php?(.*) iphone.php?$1 [L]
RewriteRule index.php iphone.php [L]
匹配,并且与index.php
不匹配...
答案 0 :(得分:1)
RewriteCond
仅适用于一条重写规则。.*
的所有包含“mobile”的用户代理,应在^.+mobile.+$
语句中使用0或更多字符。RewriteRule
不包含查询字符串 - [QSA]
标志应包含查询字符串。RewriteRule
使用正则表达式 - 您应该使用\.
来逃避点。RewriteRule
会自动保存查询字符串。<强>更新:强>
完成 .htacess :
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*mobile.*$ [NC]
RewriteRule ^(.*)index\.php $1iphone.php [L]
RewriteCond %{HTTP_USER_AGENT} ^.*mobile.*$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1iphone.php [L]
答案 1 :(得分:0)
怎么样
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*mobile.*$ [NC]
RewriteRule /path/index.php /path/iphone.php [QSA,L]
编辑:QSA是Query string append
,因此您不需要以不同方式处理。如果你想要,你也可以添加一个额外的参数,如:
RewriteRule /path/index.php /path/iphone.php?extra=param [QSA,L]