0

我一直在尝试为使用 $_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 代码,但没有成功,认为这是问题所在。

4

1 回答 1

0

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)/?$ /index.php?x=$1 [L]
于 2013-08-09T20:56:31.350 回答