1

我正在使用一种非常简单的方法在我的网站上启用虚 URL,但是,我收到500 服务器错误。

我想启用这样的 URL:mysite.com/ben而不是mysite.com/profile.php?id=2

这是我在 htaccess 文件中使用的代码:

RewriteCond %{REQUEST_FILENAME}.php -f  
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} >""
RewriteRule ^([^\.]+)$ profile.php?username=$1 [L]</pre>

这是 profile.php 顶部的查询:

$getName = explode("/",$_SERVER['REQUEST_URI']);
$result = query("SELECT * FROM users WHERE username='$getName[3]'");  
if (count($result) == 0)
 {
    header ('Location:404.php'); 
 }

现在,使用此脚本,我在尝试访问的任何页面上都会收到 500 服务器错误。在我的 Apache 错误日志中,我可以看到:RewriteRule: bad flag delimiters

这是什么意思?

4

3 回答 3

1

好的,这听起来有点愚蠢,但看看你在这里发布的链接:http: //culttt.com/2011/11/16/how-to-make-vanity-urls-using-php-htaccess -和-mysql/

在他们示例的</pre>末尾会导致 500 server error。而且,毫不奇怪,当我查看我的错误日志时,它说:

 /var/www/localhost/htdocs/.htaccess: RewriteRule: bad flag delimiters

所以删除</pre>并将 更改&gt;>

于 2013-09-10T21:35:52.297 回答
1

RewriteCond %{REQUEST_FILENAME}.php -f

-f在标志之后这一行的末尾有额外的空白。

于 2013-09-10T21:16:32.757 回答
1

尝试用以下代码替换您的 .htaccess 代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/?$ profile.php?username=$1 [L,QSA]
于 2013-09-10T21:25:28.580 回答