1

我想为 url 末尾的查询设置一个默认变量

.htaccess 文件将 url 重定向如下:

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

显示的网址

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


如果没有设置页面名称,如:

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

默认值为“索引”。我可以使用 php 函数header("location:url"),但如果我不想要的 url 会在末尾显示“索引”部分。



进程内容

   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

在您的 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为“索引”的默认值。然后,如果 mod_rewrite 给出不同的 PageID,$pageID将赌注设置为该值。然后,您的代码应使用$pageID.

于 2010-09-26T16:07:59.030 回答
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

您的问题太长,没有阅读,但是如果您只想在 .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处理程序,您也可以简单地发送状态代码(请参阅http://us.php.net/manual/en/function.header.phpheader()的第三个选项)。

于 2010-09-26T09:50:41.020 回答