Frage

Ich möchte eine Standardgröße für eine Abfrage festlegen, die am Ende einer URL kommt

Die .htaccess-Datei umleitet die URL wie folgt:

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

angezeigt url

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


, wenn der Name der Seite nicht festgelegt ist, wie in:

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

würde der Standard "Index" sein. Ich konnte PHP-Funktion header("location:url") verwenden, aber das würde am Ende des „Index“ Teil angezeigt wird, wenn die URL ... das will ich nicht.


htacess Inhalt

   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>
War es hilfreich?

Lösung

Sie müssen nicht zu index.php umleiten. Sie können so etwas wie verwenden:

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

Wenn Sie nur http://example.com/folder/ Ihre Index-Seite angezeigt, Sie verwenden könnte die folgenden in Ihrem PHP-Skript:

$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
}

Andere Tipps

Versuchen Sie diesen Code in Ihrer PHP-Datei:

$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...

Was wird dies tun, ist Satz $pageID auf einen Standardwert von „Index“. Wenn dann eine andere PageID durch die mod_rewrite gegeben wird, wird $pageID Wette Satz auf diesen Wert. Der Code sollte dann den Wert von $pageID verwenden.

Ihre Frage war zu lang, nicht gelesen, aber wenn Sie nur eine Variable in der .htaccess-Datei festlegen möchten, und übergeben es an PHP ist es ziemlich einfach, es zu tun wie dieser -

In der .htaccess-Datei (http://httpd.apache.org/docs/2.0/mod/mod_env.html#setenv):

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

In PHP-Skript (http://www.php.net/manual/en/reserved.variables.environment.php):

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

Alternativ, wenn Sie ErrorDocument Handler haben, können Sie in der Lage sein, einfach auch einen Statuscode zu senden (siehe die dritte Option zu header() http://us.php.net/manual/en/function.header.php ).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top