0

ここに記載されているチュートリアルを実際に試しました:http://net.tutsplus.com/tutorials/other/using-htaccess-files-for-pretty-urls

チュートリアルの PHP バージョンを使用しようとしました。しかし、うまくいかないようです。実際、私には少し非論理的に見えます。

これは、.htaccess ファイルに配置する必要があるコードです。

Options +FollowSymLinks  
RewriteEngine On  

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  

RewriteRule ^.*$ ./index.php  

私がテストしたように、これは実際にはすべてを index.php ファイルにリダイレクトします。そこで、このコードを index.php ファイルに挿入しました。

$request  = $_SERVER['REQUEST_URI']; 

$params     = split("/", $request);  


$safe_pages = array("login");  

if(in_array($params[0], $safe_pages)) {  
echo 'ok'; //insert a file here
} else {  
echo 'not ok'; //header to 403.php

}

このコードは非常に単純明快です。URI が /login の場合は、"ok" (そこにファイルを挿入) と表示されます。

ただし、 mywebsite.com /login と入力 すると、常に index.php が表示され、「not ok」というメッセージが表示されるので、php コードに何か問題があると思います。

4

2 に答える 2

0

.htaccess にもう 1 つのメソッドがありません

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
于 2013-04-12T21:48:19.827 に答える
0

これは「page/item」のような URL をサポートする必要があります

<?php
$request  = $_SERVER['QUERY_STRING']; 

$params     = explode("/", $request);  


$safe_pages = array("login");  

if(in_array($params[0], $safe_pages)) {  
    echo 'ok'; //insert a file here
} else {  
    echo 'not ok'; //header to 403.php
}
?>

これは 'page/item' のような URL では機能しません。

<?php
$request  = $_SERVER['REQUEST_URI']; 

$params     = explode("/", $request);  


$safe_pages = array("login");  

$last_item = count($params)-1;

if(in_array($params[$last_item], $safe_pages)) {  
    echo 'ok'; //insert a file here
} else {  
    echo 'not ok'; //header to 403.php
}

間違った項目をテストしています。配列の最後にある文字列「login」を確認する必要があります。関数 split は減価償却され、explode()を使用します

于 2013-04-12T22:04:48.977 に答える