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

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

1 голос
/ 03 ноября 2011

Нужна помощь специалиста по написанию некоторых правил переписывания .htaccess. Вот что я пытаюсь сделать:

#) User requests                    Displayed to User As            Actual Request to Server
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. Как только я начинаю добавлять мобильные материалы, я теряюсь.

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]

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

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

Спасибо!

1 Ответ

0 голосов
/ 07 мая 2012

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

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...