Php 通过htaccess定向url

Php 通过htaccess定向url,php,.htaccess,url,Php,.htaccess,Url,我知道下面的代码 RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 用于在每次访问没有www的url时将www添加到HTTP主机 类似地,代码 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f Rewrit

我知道下面的代码

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
用于在每次访问没有www的url时将www添加到HTTP主机

类似地,代码

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/folder加载文件,如果访问者类型为 www.site.com/index.php?pid=1 然后它应该和
index.php?pid=1
数据一起重写到www/folder

除了www.like for fourm.site.com/index.php?blah=blahBlah等,其他任何东西都应该如此

希望我没有混淆,也没有违反规则

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]
第二条规则的算法如下:

  • 我检查主机是否至少由3个部分组成,由点分隔。这不是一个理想的解决方案,因为有域,自然有3个部分,如.co.uk和.com.br。但是,我假设您使用的域由两部分组成
  • 因此,如果有3个部分,如:www.site.com,我将第一部分放入%1,第二部分放入%2。因此,%1='www',%2='site.com'
  • 将所有内容重定向到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/

    实际上,我还将使用一个由3部分组成的域。所以,如果你告诉我如何制作%1%2等,我会非常满意。另外,请告诉我如何在变量中生成%1部分文章。e、 g.如果访问了
    forum.site.com
    ,那么如何像
    site.com/index.php那样重写它?access=forum&otherRequest=value
    此外,您的代码会将地址栏中的url更改为www.site.com/www/,我不希望这样。当任何人访问www.site.com时,我想从site.com/www/静默加载。@Hezbullahsah我添加了3部分域的规则。%1、%2是括号中数据的参考。只需添加另一个\..+部分,这意味着[dot][something]@hezbullahsah它不应该更改地址栏中的代码,因为我不为第二个重写规则设置R标志。很奇怪,我没变,亲爱的。参见surani.com.pk,我按照你的建议做了3个部分。