PHP:htacess默认变量
我想设置一个默认的变量自带一个URLPHP:htacess默认变量
的最后一个查询的.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
}
为了这个工作,他必须做'header('Location:/ folder/index');'作为“首页”不是他的默认页面,“索引”是,并且他特别说“那会在结尾处显示“索引”部分,如果URL ...我不'想要“。 – Josh 2010-09-26 16:10:57
那时我误解了他的问题,我以为他在谈论'/index.php?pageID=首页'。重新回答我的答案。 – Lekensteyn 2010-09-27 16:29:05
非常感谢你! – Zebra 2010-09-28 09:36:15
你的问题太长,没有阅读,但是如果你只是想在你的.htaccess文件中设置一个变量并将它传递给PHP,那就很容易做到这一点 -
在.htaccess文件(http://httpd.apache .ORG /做CS/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)。
我不认为这就是他要求的......也许读他的问题会有帮助吗? – Josh 2010-09-26 16:08:42
尝试在你的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
的值。
谢谢,非常感谢! – Zebra 2010-09-28 09:37:52
顺便说一句,我真的在您的'.htaccess'中看到'?pageID =',而不是你在问题中提到的'?page ='。 – Lekensteyn 2010-09-27 16:30:17
@Lekensteyn,我的不好?page =。 – Zebra 2010-09-28 09:33:44