htaccess重定向url,子域名仅作为php文件和目录的参数

时间:2016-06-04 05:36:37

标签: php apache .htaccess redirect mod-rewrite

我实现了重定向以符合以下规则:

  1. 以.php重定向到.php?lang = en

    结尾的所有内容
  2. 以文件夹重定向到index.php?lang = en

    结尾的所有内容
  3. 我的问题是,如果最终包含* .php以外的任何文件,我如何处理请求而不进行重定向:

  4. RewriteCond %{REQUEST_URI}    !(.*?).php   [nc]
    RewriteCond %{HTTP_HOST}         ^([^\.]+)\.([^\.]+)\.([^\.]+)$
    RewriteRule ^(.*)$ http://d.com/$1/index.php?lang=%1 [R=301,L,QSA]
    
    
    RewriteCond %{REQUEST_URI}      !^/.php   [nc]
    RewriteCond %{HTTP_HOST}         ^([^\.]+)\.([^\.]+)\.([^\.]+)$
    RewriteRule ^(.*)$ http://d.com/$1?lang=%1 [R=301,L,QSA]
    
    RewriteCond %{REQUEST_URI} !^/$
    RewriteCond %{HTTP_HOST}         ^([^\.]+)\.([^\.]+)\.([^\.]+)$
    RewriteRule ^(.*)$ http://d.com/$1?lang=%1 [R=301,L,QSA]
    
    
    RewriteCond %{REQUEST_URI} ^/$
    RewriteCond %{HTTP_HOST}         ^([^\.]+)\.([^\.]+)\.([^\.]+)$
    RewriteRule ^(.*)$ http://d.com/$1index.php?lang=%1 [R=301,L,QSA]
    

    也可以获得有关我的规则的反馈或改进它们的建议。

1 个答案:

答案 0 :(得分:0)

RewriteCond %{REQUEST_URI}    !^/.php

这种情况从未得到满足,因为它会检查uri值是否以 / .php 开头,

将其更改为:

RewriteCond %{REQUEST_URI}    !^/.*\.php