RewriteRule htaccess $ 1引用php文件本身

时间:2013-02-13 10:01:51

标签: php .htaccess

代码:

htaccess的:

RewriteEngine On  
RewriteRule    ^(.*)/*$    base.php?request=$1    [NC,L]  

base.php

<?php
    echo "this is base.php <br/> and Get Vaiables <br> ";
    print_r($_GET);
?>

请求:

localhost/blahblahproject/hello  

预期结果:

  

这是base.php
  并获得Vaiables
  数组([request] =&gt; hello)

当前结果:

  

这是base.php
  并获得Vaiables
  数组([request] =&gt; base.php)

3 个答案:

答案 0 :(得分:1)

将.htaccess规则更改为:

RewriteEngine On
RewriteBase /

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

答案 1 :(得分:0)

.htaccess仅将网址重定向到您的get参数。要检索网址值,请使用parse_url或类似命令。

我有这样的功能来完成这项工作:

/**
 * Sets current request url
 */
private function setUrl() {
    $path = parse_url( $_SERVER[ 'REQUEST_URI' ], PHP_URL_PATH );
    $pathTrimmed = trim( $path, '/' );
    $pathTokens = explode( '/', $pathTrimmed );

    if ( substr( $path, -1 ) !== '/' ) {
        array_pop( $pathTokens );
    }

    $url = end( $pathTokens );

    $this -> url = $url;
}

答案 2 :(得分:0)

如果您对最后一个“/”后面的字符串感兴趣,请将.htaccess文件更改为:

RewriteEngine On
RewriteRule ^.*/(.*)$ base.php?request=$1    [NC,L]