0

代码 :

.ht 访问:

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

基础.php

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

对于请求:

localhost/blahblahproject/hello  

预期结果:

这是 base.php
和 Get Vaiables
Array ( [request] => hello )

当前结果:

这是 base.php
和 Get Vaiables
Array ( [request] => base.php )

4

3 回答 3

1

将您的 .htaccess 规则更改为:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ /base.php?request=$1 [QSA,L] 
于 2013-02-13T10:21:32.513 回答
0

.htaccess仅将 url 重定向到您的 get 参数。要检索 url 值,请使用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;
}
于 2013-02-13T10:06:37.913 回答
0

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

RewriteEngine On
RewriteRule ^.*/(.*)$ base.php?request=$1    [NC,L]
于 2013-02-13T10:16:05.370 回答