-2

多くのコードを試しましたが、どれも機能しませんでした。ファイルが PHP に含まれていない場合、htaccess でリダイレクトする方法はありますか。

これまでのhtaccess:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*).html index.php?lang=$1&menu=$2 [QSA,L]

だから私が何かを書くとき、/en/introduction.htmlそれは書き直されます。しかし、誰か/menu.php/index.php.

PHPでは、最初のPHPコードで解決できますが、システムが遅くなるため、htaccessが必要です。

4

2 に答える 2

3

これを試して:

.htaccess

<IfModule mod_rewrite.c>

    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

    RewriteRule .* index.php [L]

</IfModule>

これが行うことは、サーバーにファイルが存在する場合、たとえば/en/introduction.htmlそのファイルをロードすることです。これは、フォルダーとリンクに適用されます。

他のすべてのリクエストは次に転送されますindex.php

これで、index.phpを使用し$_SERVER['REQUEST_URI']て URL 構造を解析し、必要なことを行うことができます。


への直接アクセスを無効にすることについてmenu.php...

次の行をindex.php<?phpのタグの後に追加します。

define('_IN_SCRIPT_)', true);

次に、この行をmenu.php の<?phpタグの後に追加します

if (!defined('_IN_SCRIPT_') || !_IN_SCRIPT_) {
    exit('Direct access not allowed.');
}

ここで、index.php に menu.php を含めると、スクリプトが機能します。誰かがブラウザで menu.php に直接アクセスすると、エラーが発生します。

于 2013-10-24T08:55:48.147 に答える