我正在使用:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/mobile
RewriteCond %{DOCUMENT_ROOT}/mobile%{REQUEST_URI} -d
RewriteRule ^(.*?)/?$ /mobile/$1/ [L]
RewriteCond %{HTTP_USER_AGENT} "android|iphone|ipod" [NC]
RewriteCond %{REQUEST_URI} !^/mobile
RewriteRule ^(.*)$ /mobile/$1 [L]
问题是当移动设备被重定向时,根目录中的图像将无法加载。我正在使用它,因为我需要将子目录(mobile)添加到url示例:
www.example.com/sub/file.php
www.example.com/mobile/sub/file.php
这段代码有效,但是根目录中的图片甚至没有显示src的路径显示没有/ mobile /添加了htaccess规则。如果我将RewriteCond%{REQUEST_FILENAME}!-f添加到secund编辑的secund行中,那么root上的图像正在加载,但我从未被重定向到mobile子目录,因为所有的url都存在。
RewriteCond %{REQUEST_URI} !^/mobile
RewriteCond %{DOCUMENT_ROOT}/mobile%{REQUEST_URI} -d
RewriteRule ^(.*?)/?$ /mobile/$1/ [L]
RewriteCond %{HTTP_USER_AGENT} "android|iphone|ipod" [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/mobile
RewriteRule ^(.*)$ /mobile/$1 [L]
答案 0 :(得分:0)
由于ALL文件存在于根目录中,但并非所有文件都存在于移动目录中,因此您有两种选择。
最简单的一个是,为了使文件例外,不要将它们重写为移动设备。
RewriteCond %{REQUEST_URI} !(jpg|png|jpeg|gif)
第二个选项是执行两个步骤:首先将所有内容重写为/ mobile。如果文件不存在,请将其重写回root,但添加一个标记,以便它不会被重新写入移动设备!
#In case of a mobile device, rewrite everything to mobile. (windows phone = wp or wo7 / wp8)
RewriteCond %{HTTP_USER_AGENT} "android|iphone|ipod|wp" [NC]
RewriteCond %{REQUEST_URI} !mobile
RewriteCond %{QUERY_STRING} !noRewrite
RewriteRule ^(.*?)$ /mobile/$1 [L]
#In case the file exists, good, else rewrite back to non-mobile.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/mobile
RewriteRule ^mobile/(.*)$ /$1?noRewrite [L]
上面的htaccess已经过测试,而image.jpg在root中,而index.php在root中都是/ mobile。 index.php完美地显示了图像。
答案 1 :(得分:0)
谢谢杰弗里,到目前为止,我的回答是最接近我的情景的。只是添加到最初的问题。假设家庭目录中有一个htaccess,移动目录中有另一个htaccess,