寻找专家写一些.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]
我花了太多时间试图解决这个问题,而我只是陷入了死胡同。我继续让它的一部分工作,但其他部分打破。任何帮助将不胜感激。
谢谢!
答案 0 :(得分:0)
我想你必须先添加移动规则,这样才不会意外触发其他规则。
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]