PHP: вариабельная переменная по умолчанию HTACCESS

StackOverflow https://stackoverflow.com/questions/3797242

  •  05-10-2019
  •  | 
  •  

Вопрос

Я хочу установить переменную по умолчанию для запроса, который поставляется в конце 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-адрес ... я не хочу.



Содержание Halacess

   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>
Это было полезно?

Решение

Вам не нужно перенаправлять на 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
}

Другие советы

Попробуйте этот код в вашем файле 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 Для значения по умолчанию «индекс». Затем, если другой PlaciD задается MOD_REWRITE, $pageID сделает ставку на эту ценность. Ваш код должен затем использовать значение $pageID.

Ваш вопрос был слишком длинным, не прочитал, однако, если вы просто хотите установить переменную в вашем файле .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 обработчики, вы можете просто отправить код состояния (см. Третий вариант header(), http://us.php.net/manual/en/function.header.php.).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top