1

我最近才开始在我正在开发的网站上使用 .htaccess。一切正常,但是当我尝试访问位于索引上的 user.php 文件时,我不断得到这个 url:

http://lifeline.andornagy.info/user/?url=user

在所有其他文件和位置上,它都很好用。

这是我根据 URL 称为不同页面的功能:

  public function lifeline() {
        global $templatePath;
        if ( isset($_GET['url']) && $_GET['url'] !== 'user'  ) {        
            $url = $_GET['url'];
            $result = mysql_query("SELECT * FROM posts WHERE url='$url' ");
            if ( !mysql_num_rows($result) ) {
                if ( file_exists($templatePath.'404.php') ) {
                    include_once($templatePath.'404.php');
                } else {
                    include_once('404.php');
                }
            } 
            while($row = mysql_fetch_assoc($result)){ 
                if ( $row['type'] === 'post' ) {
                    include_once($templatePath.'post.php');
                } elseif ( $row['type'] === 'page' ) {
                    include_once($templatePath.'page.php');
                }
            }
        } elseif ($_GET['url'] === 'user') {
            include_once($templatePath.'user.php');
        } else {
            include_once($templatePath.'index.php');
        }
    }

这是我的 .htaccess 文件。

Options +FollowSymlinks -MultiViews

RewriteEngine On

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?url=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?url=$1

RewriteRule ^(.+)(\s|%20)(.+)$ /$1-$3 [R=301,QSA,L,NE]

ErrorDocument 404 /404.php

我希望我的 URL 看起来像这样:

http://lifeline.andornagy.info/user

没有 /?url=user

对不起,如果我听起来很笨。:(

4

1 回答 1

1

如果不仔细检查这一点,RewriteRule你的 .htaccess 中的最后一个包含[R=301],使其成为唯一能够“添加”(即重定向到)的规则/?user=x。我会仔细研究最后一条规则。

于 2013-05-18T17:31:39.907 回答