Regex htaccess将特定文件重定向到同一文件夹中的其他文件(如果在移动设备上)

Regex htaccess将特定文件重定向到同一文件夹中的其他文件(如果在移动设备上),regex,apache,.htaccess,mod-rewrite,redirect,Regex,Apache,.htaccess,Mod Rewrite,Redirect,我有一个由另一个网站作为子域托管的网站。我正在努力使它便于移动。到目前为止,我已经将它正确地重定向到该站点的移动版本(目前仅与Galaxy S3手机分辨率兼容),即index_m.php而不是index.php。我有其他php页面文件,用于该网站美学部分的移动版本(菜单栏、徽标、页脚等)。然而,当我更新时,我只想更改一组文件(实际的站点内容),而不是两个。这在很大程度上是有效的,因为我有一个可选的菜单栏php,可以将用户发送到相应的移动页面。问题在于,链接到站点各个部分的页面部分(如更新和突出显

我有一个由另一个网站作为子域托管的网站。我正在努力使它便于移动。到目前为止,我已经将它正确地重定向到该站点的移动版本(目前仅与Galaxy S3手机分辨率兼容),即index_m.php而不是index.php。我有其他php页面文件,用于该网站美学部分的移动版本(菜单栏、徽标、页脚等)。然而,当我更新时,我只想更改一组文件(实际的站点内容),而不是两个。这在很大程度上是有效的,因为我有一个可选的菜单栏php,可以将用户发送到相应的移动页面。问题在于,链接到站点各个部分的页面部分(如更新和突出显示)使用的是指向桌面格式页面的链接

这是我目前的htaccess内容。如何为特定文件添加另一组条件?(特别是games.php/games_m.php和history.php/history_m.php)它们在同一个文件夹中

Options +FollowSymLinks
RewriteEngine on

# if the browser accepts these mime-types, it's definitely mobile, or pretending to be
RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC,OR]

# a bunch of user agent tests
RewriteCond %{HTTP_USER_AGENT} "sony|symbian|nokia|samsung|mobile|windows ce|epoc|opera" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "mini|nitro|j2me|midp-|cldc-|netfront|mot|up\.browser|up\.link|audiovox"[NC,OR]
RewriteCond %{HTTP_USER_AGENT} "blackberry|ericsson,|panasonic|philips|sanyo|sharp|sie-"[NC,OR]
RewriteCond %{HTTP_USER_AGENT} "portalmmm|blazer|avantgo|danger|palm|series60|palmsource|pocketpc"[NC,OR]
RewriteCond %{HTTP_USER_AGENT} "smartphone|rover|ipaq|au-mic,|alcatel|ericy|vodafone\/|wap1\.|wap2\.|iPhone"[NC]
RewriteCond %{HTTP_USER_AGENT} "android|googlebot-mobile|iemobile|ipod|#opera mobile|palmos|webos" [NC]

RewriteRule ^$ http://sc55.duke4.net/index_m.php [R=302]

我知道传统上人们会使用一个完全替代的子域或子文件夹作为移动页面,但正如我所说的,我只希望一次更新一组文件。我无法访问任何数据库系统,也无法从这两个网站获取数据。

您可能已经意识到,问题是一组条件只适用于一个规则。如何添加遵循相同条件的规则?一种解决方法是重复这些条件,但这太重了

更有效的解决方案是使用if-then-else逻辑:否定条件,然后保持文件不变,并跳过以下规则,因此这些规则在满足条件时适用。这看起来像这样:

# Do we meet NONE of the conditions?
RewriteCond %{HTTP_ACCEPT} !(text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml) [NC]
RewriteCond %{HTTP_USER_AGENT} !(sony|symbian|nokia|samsung|mobile|windows ce|epoc|opera) [NC]
RewriteCond %{HTTP_USER_AGENT} !(mini|nitro|j2me|midp-|cldc-|netfront|mot|up\.browser|up\.link|audiovox) [NC]
RewriteCond %{HTTP_USER_AGENT} !(blackberry|ericsson,|panasonic|philips|sanyo|sharp|sie) [NC]
RewriteCond %{HTTP_USER_AGENT} !(portalmmm|blazer|avantgo|danger|palm|series60|palmsource|pocketpc) [NC]
RewriteCond %{HTTP_USER_AGENT} !(smartphone|rover|ipaq|au-mic,|alcatel|ericy|vodafone\/|wap1\.|wap2\.|iPhone) [NC]
RewriteCond %{HTTP_USER_AGENT} !(android|googlebot-mobile|iemobile|ipod|#opera mobile|palmos|webos) [NC]

# If so, THEN leave the request untouched (and optionally skip the following rules)
RewriteRule ^ - [L]
# If there are more non-mobile rewrite rules, skip the next two rules by using this instead:
# RewriteRule ^ - [L,S=2]

# ELSE (we meet some of the conditions):
RewriteRule ^/?$ http://sc55.duke4.net/index_m.php [L,R=302]
RewriteRule ^(games|history)\.php http://sc55.duke4.net/$1_m\.php [L,R]

添加
RewriteRule^/?(游戏历史)\.php$http://sc55.duke4.net/$1_m.php[R=302]
谢谢!我确实在为如何宣布这一切而挣扎。我输入了你的代码,但我得到了一个内部服务器错误,网站没有加载。我还有什么要补充的吗?很抱歉,我是htaccess编辑的新手。我是否应该对if和else进行某种声明?我在第五个条件上有一个输入错误:缺少
[NC]
之间的空格。尝试插入它。+1这应该可以@MusicallyInspired:如果您收到500个错误,您应该始终检查Apache error.log。我做了更改,但它仍然给我一个服务器错误。我没有访问error.log文件的权限,至少它与FTP上的.htaccess文件不在同一文件夹中。我将尝试联系服务器管理员,因为我只是子域上的托管站点。您尝试使用哪个版本,即
[L]
[L,S=3]
?(顺便说一句,应该是
S=2
,好像我不会数数)