1

非常に簡単な方法で Web サイトでバニティ 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

OK、これはばかげているように聞こえるかもしれませんが、ここに投稿したリンクを見てください: http://culttt.com/2011/11/16/how-to-make-vanity-urls-using-php-htaccess -および-mysql/

例の</pre>最後にある は、500 サーバー エラーを引き起こします。そして、当然のことながら、エラー ログを見ると、次のように表示されます。

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

したがって、 を削除して</pre>に変更&gt;>ます。

于 2013-09-10T21:35:52.297 に答える
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 に答える
1

RewriteCond %{REQUEST_FILENAME}.php -f

-fこの行の終わりには、フラグの後に余分な空白があります。

于 2013-09-10T21:16:32.757 に答える