我想做的事;
我希望移动用户重定向到http://m.site.org/mobile-home。
重定向到 m.bzaeds.org 不是问题。我在 Apache 中也能正常工作,但我在 Apache 中使用的相同 .htaccess 规则似乎在 NGINX 中不起作用。我也尝试使用 NGINX 转换器转换此确切规则,但它给我的规则也不起作用。
RewriteCond %{HTTP_HOST} m.site.org
RewriteCond %{REQUEST_URI} ^\/?$
RewriteRule ^(.*)$ mobile-home [L]
我目前所做的;
因此,我让 NGINX 重定向到 m.site.here/mobile-home。现在,我们使用移动模块来检测所连接的设备是否为移动设备,并自动应用自定义移动主题。它可以毫无问题地检测设备是否为移动设备。
但是,即使重定向有效,它仍无法加载,我查看了 error_log 并发现它失败是因为 /var/www/html/drupal/mobile-home 不存在 —— 是的,这是真的。我假设这与 mobile-home 实际上是一个节点有关,因为 drupal 中的页面就是这样的。
但是,无论我如何尝试创建重定向(或返回 301),它要么被禁止,要么无限重定向循环,要么抛出上述错误。
有任何想法吗?
现在这是我迄今为止尝试过的大量令人困惑的事情;
location / {
#if ($http_user_agent ~* '(iPhone|iPod|android|blackberry)') {
# rewrite ^/(.*)$ /index.php?q=$1;
#}
#if ($http_host ~ "m.bzaeds.org"){
#rewrite ^(.*)$ /mobile-home [L] RewriteCond $request_filename !-f;
#}
try_files $uri @rewrite;
#try_files $uri /mobile-home break;
}
location @rewrite {
#index index.php;
# if ($http_user_agent ~* ('iPhone|iPod)') {
# rewrite ^(.*)$/index.php http://m.bzaeds.org/mobile-home$1 break;
# }
# Some modules enforce no slash (/) at the end of the URL
# Else this rewrite block wouldn't be needed (GlobalRedirect)
rewrite ^/(.*)$ /index.php?q=$1;
#return 301 /mobile-home break;
(并且,我也尝试过摆脱 location @rewrite 并仅在 location / 下进行主要重写,但我仍然遇到许多相同的错误。我刚刚在非移动版本中完成了这样的声明,所以,是的。)
答案1
因此,我没有按照我最终想要的方式使用重定向,因为无论我怎么尝试,它仍然不会停止在错误的地方查找。但是,我发现如果您使用“移动工具”模块,它会在“首页”下为您提供选项,将其设置为节点,在我们的例子中是 mobile-home 而不是索引。
问题解决了,问题解决了,足够好了。