.htaccess通配符子域
我正在尝试使用.htaccess和通配符子域实现一个解决方案,以便 已映射到。我的规则是这样的:.htaccess通配符子域,.htaccess,.htaccess,我正在尝试使用.htaccess和通配符子域实现一个解决方案,以便 已映射到。我的规则是这样的: RewriteCond %{HTTP_HOST} !www.example.com [NC] RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC] RewriteRule ^(.*/) /index.php [PT,L] 这是可行的,但忽略了其他一切。当我尝试在规则中添加任何内容时,例如: RewriteRule ^(.*/)
RewriteCond %{HTTP_HOST} !www.example.com [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC]
RewriteRule ^(.*/) /index.php [PT,L]
这是可行的,但忽略了其他一切。当我尝试在规则中添加任何内容时,例如:
RewriteRule ^(.*/) /index.php/hello [PT,L]
我得到一个500内部服务器错误。如何使其工作?尝试将您的
重写规则更改为
RewriteRule ^/(.*)$ /index.php/accounts/%1/$1 [PT]
这将把URL重写为包含子域和原始请求URI的URL
编辑:也许需要这样做
RewriteRule ^(.*)$ /index.php/accounts/%1/$1 [PT]
如评论中所述。这是我用来重定向我自己网站上子域的代码的改编。我并不声称这是最佳实践,但它是有效的
RewriteCond %{HTTP_HOST} ^(.*)\.com$ [NC]
RewriteCond %1 !^(www)\.example$ [NC]
RewriteRule ^.*$ http://www.example.com/index.php/accounts/%1/ [R=301,L]
您可能需要从规则中排除index.php
:
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com$ [NC]
RewriteRule !^index\.php($|/) index.php/accounts/%2%{REQUEST_URI} [PT,L]
这是可行的,但我不想重定向网站上的用户。谢谢。我现在无法测试它,但是用[PT,L]替换[R=301,L]会不会起到同样的作用?我试过了,但它似乎没有启动,即使我把index.php改成其他东西。哦。。。在.htaccess中可能需要使用模式^(.*)(无斜杠)。(如果可以的话,我建议将这些指令放在主服务器配置文件中)。谢谢你的帮助!谢谢,我用了其他的(-f和-d),但是这个也可以用,所以我将把它归档以备将来参考。