我知道下面的代码
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
用于在每次访问网址时将www添加到HTTP主机,而无需使用www。
同样代码
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
用于将url中的所有内容发布到url变量的值中的index.php。没有改变第一个例子中的URL(将URL从没有www改为www)。
我想要的是有点棘手。
我想如果没有www那么应该执行第一个示例步骤。
如果有www或任何其他文本,例如forum.site.com或blog.site.com或www.site.com然后在第二个例子中,它应该默默地指向同名的文件夹。
eE.g。如果是www,则应该重写为变量所在的文件夹www/
。
像
访客类型www.site.com
它应该从www /文件夹和访问者类型加载文件
www.site.com/index.php?pid=1
那么它应该与index.php?pid=1
数据一起重写到www /文件夹
除了www以外的任何东西都应该这样做。比如fourm.site.com/index.php?blah=blahBlah等。
希望我不要混淆,也不要违反规则。答案 0 :(得分:0)
RewriteEngine On
RewriteCond %{HTTP_HOST} !^.+{3,}
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(.*)\.(.+\..+)
RewriteRule ^(.*)$ http://%2/%1/$1 [QSA,L]
第二条规则的算法是:
http:://site.com/www/request
如果您有3个部分域名,例如site.co.uk,则可以制定更复杂的规则:
RewriteCond %{HTTP_HOST} ^(.*)\.(.+\..+\..+)
RewriteRule ^(.*)$ http://%2/%1/$1 [QSA,L]
这将重写:subdomain.site.co.uk
到http://site.co.uk/subdomain/