1

URLの最後に来るクエリのデフォルト変数を設定したい

.htaccessファイルは、次のようにURLをリダイレクトします。

http://www.server.com/folder/subfolder/index.php?page="some-page-name"

表示されたURL

http://www.server.com/folder/some-page-name


次のように、ページ名が設定されていない場合。

http://www.server.com/folder/

デフォルトは「インデックス」です。php関数を使用することもできますheader("location:url")が、URLが必要ない場合は、最後に「インデックス」の部分が表示されます。



htacessコンテンツ

   Options -Indexes

    <IfModule mod_rewrite.c>
    RewriteEngine On
    #RewriteCond %{REQUEST_URI} !^(/index\.php|/img|/js|/css|/robots\.txt|/favicon\.ico)
    RewriteBase /folder/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^.*\.css.*$ [NC]
    RewriteRule ^(.*)$ subfolder/index.php/?page=$1 [L]
    </IfModule>

    <IfModule mod_rewrite.c> 
    ErrorDocument 404 /error.html
    ErrorDocument 403 /error.html
    </IfModule>
4

3 に答える 3

1

index.phpにリダイレクトする必要はありません。次のようなものを使用できます。

header('Location: /folder/front-page');

http://example.com/folder/でインデックスページを表示したいだけの場合は、PHPスクリプトで次を使用できます。

$requested_page = filter_input(INPUT_GET, 'pageID');
$allowed_pages = array('some-page', 'some-page-name');
if($requested_page == ''){
   // display your index page as ?pageID is not set or empty
}
elseif(in_array($requested_page, $allowed_pages)){
   // display $requested_page
}
else{
   // display a 404 Not Found error
}
于 2010-09-26T09:50:30.910 に答える
1

PHPファイルで次のコードを試してください。

$pageID = 'index';

if(isset($_REQUEST['pageID']) && !empty($_REQUEST['pageID']))
    $pageID = get_magic_quotes_gpc() ? stripslashes($_REQUEST['pageID']) : $_REQUEST['pageID'];

// Your code should now use the $pageID variable...

これ$pageIDにより、デフォルト値の「インデックス」が設定されます。次に、別のPageIDがmod_rewriteによって指定された場合、$pageIDはその値に設定されてベットされます。その場合、コードはの値を使用する必要があります$pageID

于 2010-09-26T16:07:59.030 に答える
-1

あなたの質問は長すぎて読まなかったが、.htaccessファイルに変数を設定してPHPに渡したいだけなら、このようにするのはとても簡単だ-

.htaccessファイル(http://httpd.apache.org/docs/2.0/mod/mod_env.html#setenv):

SetEnv default_url http://my.url/goes/here

PHPスクリプト(http://www.php.net/manual/en/reserved.variables.environment.php):

header('Location: '. $_ENV['default_url']);

または、ErrorDocumentハンドラーがある場合は、ステータスコードも送信できる場合があります(3番目のオプションheader()であるhttp://us.php.net/manual/en/function.header.phpを参照)。

于 2010-09-26T09:50:41.020 に答える