Vanity URLS: mod_rewrite и SQL-запрос возвращают ошибку неверных разделителей флага

Я использую очень простой метод для включения тщеславных 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: плохие разделители флага

Что это значит?

3 ответа

Решение

ОК, это будет звучать глупо, но, глядя на ссылку, которую вы разместили здесь: 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> и изменить &gt; в >,

Попробуйте заменить ваш код.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]

RewriteCond %{REQUEST_FILENAME}.php -f

В конце этой строки после -f флаг.

Другие вопросы по тегам