簡體   English   中英

RewriteRule htaccess $ 1引用到php文件本身

[英]RewriteRule htaccess $1 refferring to php file itself

代碼:

.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
並獲取庫存
數組([request] => hello)

當前結果:

這是base.php
並獲取庫存
數組([request] => base.php)

將您的.htaccess規則更改為此:

RewriteEngine On
RewriteBase /

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

.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;
}

如果您對最后一個“ /”之后的字符串感興趣,請將.htaccess文件更改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM