Я создал www.example.com
а также m.example.com
, m.example.com
проживает внутри htdocs/m/
папка. Я использую приведенные ниже коды в .htaccess
:
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]
#mobile
RewriteCond %{HTTP_HOST} ^m\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/m(/|$) [NC]
RewriteRule ^(.*)$ m/$1 [L]
# Resolve .php file for extension-less php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]
Теперь, если пользователи нажали m.example.com/abc
и если abc
файлы не существуют, он будет перенаправлять пользователей на страницу ошибки, так как у меня есть код ниже на .htaccess
код внутри htdocs/m/
папка
ErrorDocument 404 http://m.example.com/error
Но теперь я хочу, чтобы пользователи были перенаправлены на www.example.com/abc
вместо этого, как abc
может быть действительным файлом в настольной версии. Только если файлы также не существуют на рабочем столе сайта, пользователи будут перенаправлены на страницу ошибки.
Вы можете разместить это правило как первое правило в DocumentRoot
из m.example.com
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}\.php !-f
RewriteRule ^(.+)$ http://www.example.com/$1 [L,R=302]
Других решений пока нет …