Я настраиваю скрипт социальной сети, у него есть как настольная, так и мобильная версия сайта. Когда мобильное устройство пытается просмотреть сайт, мобильная страница обслуживается с URL-адресом www.example.com/mobile. Мне нужно правило перезаписи .htaccess, которое может изменить все www.example.com/mobile URL-адрес m.example.com без фактического перенаправления на подобласть m Это то, что я мог придумать
RewriteCond %{HTTP_HOST} ^m.example.com RewriteRule (.*) http://www.example.com/mobile/$1 [R=301,L]
Но я получаю сообщение об ошибке ... Rewitecond: Bad flag delimiters
Как мне это исправить или что было бы лучше?
P.S У меня нет файла .htaccess. Я настраиваю эти правила прямо внутри директивы httpd.conf. Я не думаю, что это будет иметь какое-либо значение, но просто подумал, что было бы лучше упомянуть ... на всякий случай.
С тех пор я переместил включенный .htaccess и вынул правила перезаписи из файла httpd.conf и проверил, работает ли .htaccess и включен ли mod_rewrite. Я использую этот код, чтобы убедиться, что mod_rewrite действительно включен
<?php
ob_start();
phpinfo(INFO_MODULES);
$contents = ob_get_contents();
ob_end_clean();
var_dump(strpos($contents, 'mod_rewrite') !== false);
?>
Когда я запускаю этот файл, я получаю вывод bool(true)
Также я заметил, что правила перезаписи, подобные приведенному ниже, работают нормально.
# 301 redirect if missing www.
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Но правила эти правила не работают
RewriteRule ^link([^/]*).html$ rewrite.php?link=$1 [L]
RewriteCond %{HTTP_HOST} ^m.jukpac.com
RewriteRule (.*) http://www.jukpac.com/mobile/$1 [R=301,L]
Почему мои правила перезаписи работают только частично? : - /
Ниже приведен снимок журналов перезаписи
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (2) init rewrite engine with requested uri /rewrite.php
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (1) pass through /rewrite.php
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] strip per-dir prefix: /var/www/html/rewrite.php -> rewrite.php
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] strip per-dir prefix: /var/www/html/rewrite.php -> rewrite.php
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] applying pattern '^' to uri 'rewrite.php'
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] strip per-dir prefix: /var/www/html/rewrite.php -> rewrite.php
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] applying pattern '[^/]$' to uri 'rewrite.php'
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] strip per-dir prefix: /var/www/html/rewrite.php -> rewrite.php
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] applying pattern '^link([^/]*).html$' to uri 'rewrite.php'
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] strip per-dir prefix: /var/www/html/rewrite.php -> rewrite.php
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] applying pattern '(.*)' to uri 'rewrite.php'
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] strip per-dir prefix: /var/www/html/rewrite.php -> rewrite.php
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] applying pattern '^(.*)' to uri 'rewrite.php'
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] strip per-dir prefix: /var/www/html/rewrite.php -> rewrite.php
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (3) [perdir /var/www/html/] applying pattern '^file/pic/photo/(.*)\\.(.*)$' to uri 'rewrite.php'
173.245.62.183 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a160a228/initial] (1) [perdir /var/www/html/] pass through /var/www/html/rewrite.php
108.162.222.177 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a15edb58/initial] (2) init rewrite engine with requested uri /static/ajax.php
108.162.222.177 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a15edb58/initial] (1) pass through /static/ajax.php
108.162.222.177 - - [25/Jan/2014:02:58:42 --0500] [www.jukpac.com/sid#7fd2a13364a0][rid#7fd2a15edb58/initial] (3) [perdir /var/www/html/] strip per-dir prefix: /var/www/html/static/ajax.php -> static/ajax.php
Похоже, вы получаете ошибку синтаксического анализа, потому что операторы RewriteCond пытаются интерпретировать [R=301,L]
, хотя тот предназначен для RewriteRule
.
Попробуйте поместить их в разные строки, например:
RewriteCond %{HTTP_HOST} ^m.example.com
RewriteRule (.*) http://www.example.com/mobile/$1 [R=301,L]