整个域的.htaccess文件

时间:2015-01-11 15:54:07

标签: php .htaccess url mod-rewrite server

我的项目中有这个结构:

domain.com

    -index.php

    frontend

        .htaccess

        -index.php
        -view1.php
        -view2.php

        account

            -index.php
            -view1.php
            -view2.php

    backend

        -class1.php
        -class2.php

domain.com/index.php:

include ( 'frontend/index.php' );

domain.com/frontend/index.php:

$str = $_GET['values'];
$str = str_replace ( '../' , '' , $str );

$file = $str . '.php';

if ( file_exists ( $file ) )
{
    include ( $file );
}

domain.com/frontend/.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?values=$1 [L]
</IfModule>

那么应该调用哪些url来获取特定模板(.php-files)?

问候!

1 个答案:

答案 0 :(得分:0)

我不认为,你真的想要这个:) 尝试类似的东西

 RewriteEngine On
 RewriteBase /

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ /index.php?values=$1 [L]

现在你有$ _GET [&#39;价值观&#39; ] =&#39; account / view1&#39; 你可以用PHP处理它。

将你的htaccess放在你的htdocs root中,在你的情况下你的前端是&#39;夹。 你的新index.php可以是这样的

 <?php

      $str = $_GET[ 'values' ];
      $str = str_replace( '../', '', $str );

      $vars = explode( '/', $str );
      $path = '';
      foreach( $vars as $var ) {
           $p = strpos( $var, ':' );
           if( $p == 0  ) {
                $path .= $var . '/';
                continue;
           }
           $_GET[ sub_str( $var, 0, $p ) ] = sub_str( $var, $p + 1 );
      }

      if( $path ) {

           // File
           $file = $path . '.php';
           if( file_exists( $file ) ) {
                include( $file );
                exit;
           }

           // Direction
           $file = $path . '/index.php';
           if( file_exists( $file ) ) {
                include( $file );
                exit;
           }

           // Page not found // comment out if you dont want the default page
           // include( '404.php' );

      }

      // Default Page
      include( 'home.php' );

使用此解决方案,您总是与php在同一目录中,您可以根据需要解释URL。您可以在URL中包含ID或任何您想要的ID,并且您可以在此文件中包含所有标准包含。

更新

  • 默认页面和目录支持
  • 价值支持。例如:

    http://domain.com/account/view/member_id:14
    
    = Result
    File: account/view/index.php
    $_GET[ 'member_id' ]: 14
    

未经测试。玩得开心:))