сложные правила .htaccess

#regex #apache #.htaccess

#регулярное выражение #apache #.htaccess

Вопрос:

Ищу помощь от эксперта по написанию некоторых правил перезаписи .htaccess. Вот чего я пытаюсь достичь:

#) Запросы пользователя отображаются пользователю как фактический запрос к серверу
1) www.example.com * example.com * example.com*
2) example.com example.com example.com/index.php
3) example.com/index.php example.com example.com/index.php
4) example.com/mypage example.com/mypage example.com/index.php?p=mypage
5) m.example.com m.example.com example.com/mobile.php
6) m.example.com/index.php m.example.com example.com/mobile.php
7) m.example.com/mobile.php m.example.com example.com/mobile.php
8) m.example.com/mypage m.example.com/mypage example.com/mobile.php?p=mypage

Вот что я работаю до сих пор. Он обрабатывает строки 1, 3 и 4. Как только я начинаю добавлять мобильные материалы, я теряюсь.

Переписать движок на
База перезаписи /

Переписать второй %{HTTP_HOST} ^www.(. )$ [NC]
RewriteRule ^ http://%1 %{REQUEST_URI} [R=301,L]

Перепишите второй %{THE_REQUEST} ^GET.*index.php [Северная Каролина]
RewriteRule (.*?)index.php/*(.*) /$1$2 [ R=301,L]

RewriteRule ^([a-z-] )$ /index.php?p=$1 [L]

Я потратил слишком много времени на попытки разобраться в этом, и я просто продолжаю натыкаться на тупики. Я продолжаю заставлять его части работать, но затем другие части ломаются. Любая помощь будет оценена.

Спасибо!

Ответ №1:

Я бы предположил, что вам нужно сначала добавить мобильные правила, чтобы вы случайно не запустили другие свои правила.

 RewriteEngine On

# 6,7
RewriteCond %{HTTP_HOST} ^m. [NC]
RewriteRule ^/(index|mobile).php$ http://m.example.com/ [R=301,L]

# 5,8
RewriteCond %{HTTP_HOST} ^m. [NC]
RewriteRule ^([a-z-] )$ /mobile.php?p=$1 [L]

# 1
RewriteCond %{HTTP_HOST} ^www. [NC]
RewriteRule (.*) http://example.com$1 [R=301,L]

# 3 (and example.com/mobile.php)
RewriteRule ^/(index|mobile).php$ http://example.com/ [R=301,L]

# 2,4
RewriteRule ^/([a-z-] )$ /index.php?p=$1 [L]