使用$ _get函数用法重写htaccess URL

时间:2013-08-09 17:22:28

标签: php .htaccess get rewrite

我一直在尝试为一个使用$ _get函数通过使用字符串拉取内容页面的网站进行htaccess URL重写(R = 302)。例如,我正在尝试更改以下内容:

http://www.site.com/index.php?page=about

进入这个:

http://www.site.com/about/

但是,如果我使用查询第二个URL,我已设法将其设置为重定向index.php文件中的页眉和页脚数据,但它不会获取CSS或$ _get内容的信息。以下是htaccess条目和$ _get信息:

RewriteEngine On
RewriteBase /
RewriteRule ^(.*?)/$ /index.php?page=$1 [NC,QSA,L]
RewriteRule ^(.*?)/$ $1.html [NC,L,QSA,R=302]


<?php
$folder = '';
$ext = 'html';
if (!$_GET['page'] || strpos($_GET['page'], '/') === true)
$path = 'home.' . $ext;
else $path = $_GET['page'] . '.' . $ext;
if (!file_exists($path)) {
 $messages = array(
      '404: Page does not exist; Please check the URL you entered.',
      '404: Error 404, please check the URL of the page.'
 );
 print $messages[ rand(0, (count($messages) - 1)) ];
}
elseif (!@include($path)) print '300: couldn\'t get the page';
?>

任何帮助将不胜感激。我一直试图修改php代码,认为这是问题。

1 个答案:

答案 0 :(得分:0)

首先,你的两个重写规则具有相同的条件,因此只有第一个才能满足。我想如果服务器上不存在请求的uri,你可能只想重写。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)/?$ /index.php?x=$1 [L]