PHP: variable por defecto .htaccess
-
05-10-2019 - |
Pregunta
Quiero establecer una variable por defecto para una consulta que se produce al final de una URL
El archivo .htaccess redirige la URL de la siguiente manera:
http://www.server.com/folder/subfolder/index.php?page="some-page-name"
que se muestra url
http://www.server.com/folder/some-page-name
Si no se establece el nombre de la página, como en:
http://www.server.com/folder/
el valor por defecto sería "índice". Podría utilizar la función php header("location:url")
pero eso sería mostrar la parte de "índice" al final si la url ... que no quiero.
contenido 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>
Solución
Usted no tiene que redirigir a index.php. Se puede usar algo como:
header('Location: /folder/front-page');
Si lo que desea es http://example.com/folder/ mostrar su página de índice, podría utilizar el siguiente en el script 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
}
Otros consejos
Trate de este código en su archivo 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...
Lo que esto hará es $pageID
conjunto a un valor predeterminado de "índice". Entonces, si un PageID diferente viene dado por la mod_rewrite, $pageID
apostará conjunto a ese valor. Su código a continuación, debe utilizar el valor de $pageID
.
Su pregunta era demasiado largo, no leyó, sin embargo, si lo que desea es establecer una variable en el archivo .htaccess y pasarlo a PHP que es bastante fácil de hacerlo de esta manera -
En el archivo .htaccess (http://httpd.apache.org/docs/2.0/mod/mod_env.html#setenv):
SetEnv default_url http://my.url/goes/here
En su script PHP (http://www.php.net/manual/en/reserved.variables.environment.php):
header('Location: '. $_ENV['default_url']);
Como alternativa, si tiene manipuladores ErrorDocument
, usted podría ser capaz de enviar simplemente un código de estado también (véase la tercera opción para header()
, http://us.php.net/manual/en/function.header.php ).