我正在使用一种非常简单的方法在我的网站上启用虚荣URL,但是,我得到 500服务器错误。
我想启用这样的网址: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
这是什么意思?
答案 0 :(得分:1)
RewriteCond %{REQUEST_FILENAME}.php -f
-f
标志后,此行末尾有额外的空格。
答案 1 :(得分: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]
答案 2 :(得分:1)
好的,这听起来有些愚蠢,但看看你在这里发布的链接:http://culttt.com/2011/11/16/how-to-make-vanity-urls-using-php-htaccess-and-mysql/
示例末尾的</pre>
将导致500服务器错误。并且,毫不奇怪,当我查看我的错误日志时,它说:
/var/www/localhost/htdocs/.htaccess: RewriteRule: bad flag delimiters
请删除</pre>
并将>
更改为>
。