3

これにはおそらく簡単な答えがありますが、見つけられなかったので、単純な質問は、最後にスラッシュを付けて表示するURLを取得するにはどうすればよいですか?

例: example.com/page.html または example.com/page.php の代わりに example.com/page/

http://php.net/manual/en/security.hiding.phpを読みましたが、そのほとんどが頭から離れました。私はexpose_phpをオフに設定しましたが、拡張機能はまだそこにあります.これは、構成ファイルで何かを編集するか、コードをphpスクリプトに追加することによって達成されますか?

参考までに、mod_rewrite wikiが役に立ちました。

4

3 に答える 3

3

これは、HTTPサーバーにURL書き換えルールを追加することで実現されます。これにより、着信リクエストがexample.com/page/からexample.com/page.phpにマッピングされます。

ディレクトリスタイル名(末尾にスラッシュを付ける)を使用すると、クライアントがページに関連するいくつかのファイルにアクセスしようとするときに問題が発生する可能性があることに注意してください。

  • example.com/page.phpをフェッチするときに、ブラウザがロードするCSSファイルなどを検出した場合、ブラウザはexample.com/file.cssでそれを探します。
  • example.com/page/をフェッチすると、URIの最上位フォルダーにいなくなったため、example.com / page/file.cssをロードしようとします。<base href="http://example.com" />各ページにタグを追加する必要があるため、ディレクトリスタイルのページの名前を変更すると、最終的には悪い考えになります。
于 2012-06-22T14:32:39.797 に答える
1

(Apacheサーバー上で)mod_rewriteを使用できます(PHP-Parser Varianteよりも優れた方法です)

例:

RewriteEngine on 
RewriteRule ^(.*).html$ $1.php
于 2012-06-22T14:29:20.123 に答える
0

PHPコードでは、最初にこれを使用できます。

<?php
    function curPageURL() {
     $pageURL = 'http';
     if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
     $pageURL .= "://";
     if ($_SERVER["SERVER_PORT"] != "80") {
      $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
     } else {
      $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
     }
     return $pageURL;
    }
    if(substr($_SERVER["REQUEST_URI"], -1) != "/")
        header('Location: ' . curPageURL() . '/');
?>

お役に立てれば!:)

于 2012-06-22T14:30:00.867 に答える