PHP:HTACCESS默认变量
-
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。
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>
解决方案
您不必重定向到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
默认值“索引”。然后,如果mod_rewrite给出了其他pageid, $pageID
将BET设置为该值。然后,您的代码应使用 $pageID
.
您的问题太长了,没有阅读,但是如果您只想在.htaccess文件中设置一个变量并将其传递给PHP,那么这样很容易做到这一点 -
在.htaccess文件(http://httpd.apache.org/docs/2.0/mod/mod/mod_env.html#setenv)中:
SetEnv default_url http://my.url/goes/here
在您的PHP脚本(http://www.php.net/manual/en/resveres.variables.environment.php)中:
header('Location: '. $_ENV['default_url']);
或者,如果您有 ErrorDocument
处理程序,您也可以简单地发送状态代码(请参阅第三个选项 header()
, http://us.php.net/manual/en/function.header.php).
不隶属于 StackOverflow