我讨厌问关于mod_rewrite的问题,但我似乎不能让这些规则正常工作。我之前做过一次设置并解决了一次,但是几年过去了,现在就是玩得不好,我的mod_rewrite知识又回来了……
本质上,我想做的是在主域example.com上强制www。(或者强制不使用www会更好,但我还不能让它与动态子域名一起正常工作)。
如果存在my.example.com规则,则相应地遵循这些规则
对于其他任何东西,例如:*.example.com,传递到另一个文件进行解析。
我目前拥有的规则处理强制www,并正确地处理动态子域,但完全忽略my.example.com规则,将其作为通配符子域处理。似乎我可以让我的任何一条规则正常工作,但当试图让它们一起工作时,这就是一个混蛋。如果任何人知道必须让它正常工作,那将是超级感激。
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# force www on main, force no www would be better.
RewriteCond %{HTTP_HOST} !^(.*)\.example.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
# my.example.com  defined subdomain
RewriteCond %{HTTP_HOST} !^my\.example\.com$ [NC]
RewriteRule ^.*$ - [S=3]
RewriteRule ^$ /mydirectory/index.php [L]
RewriteRule ^category/([^/]+)/?$ /mydirectory/index.php?category=$1  [L]
RewriteRule ^submit/?$ /mydirectory/process.php [L]
# *.example.com
RewriteCond %{HTTP_HOST} ^(.*)\.com$ [NC]
RewriteCond %1 !^(www)\.examples$ [NC]
RewriteRule ^([^/]+)/?$ /subdomainparse/index.php?subdomain=%1&fakedirectory=$1 [L]发布于 2010-08-17 05:03:27
试试这些规则:
# remove www on main
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
# my.example.com  defined subdomain
RewriteCond %{HTTP_HOST} !^my\.example\.com$ [NC]
RewriteRule ^.*$ - [S=3]
RewriteRule ^$ /mydirectory/index.php [L]
RewriteRule ^category/([^/]+)/?$ /mydirectory/index.php?category=$1  [L]
RewriteRule ^submit/?$ /mydirectory/process.php [L]
# *.example.com
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^([^/]+)/?$ /subdomainparse/index.php?subdomain=%1&fakedirectory=$1 [L]第一条规则现在将+www.example.com*重定向到example.com。第三条规则将捕获对不存在的主机的任何请求。
https://stackoverflow.com/questions/3496760
复制相似问题