0

訪問者が私の Web サイトにアクセスし、myWebsiteName/userName の形式で URL を入力すると、userName に関連付けられたメンバー ID を検索してからプロファイル ページに転送されるスクリプトに転送されます。

問題は、URL が myWebsite/member-profile?member_id の形式に変更されることですが、URL に入力されたままにしておきたいです。これは mod_rewrite と関係があると思いますが、どの条件またはルールが適用されるのかわかりません。

以下は、私の .htaccess ファイルと、メンバー プロファイルを検索するスクリプトのコードです。アドバイスをお願いします。

SuPHP_ConfigPath /home/helcupor/public_html
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

#for files, append .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

#for vanity urls redirect to url2id.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ url2id.php?vanityName=$1 [L]

AuthUserFile "/home/helcupor/.htpasswds/public_html/passwd"

ErrorDocument 404 /routing.php
#AuthName "/admin/"

url2id.php

<?php
include("includes/functions-and-vars.inc");
$connection = mysql_connect('localhost','','');
$vanityName = explode("/",$_SERVER['REQUEST_URI']);

if(strlen($vanityName['1'])>0)  {
    $vanityName = mysql_real_escape_string($vanityName['1'],$connection);
    $validSpecialChars = array('-', '_'); 
    if(ctype_alnum(str_replace($validSpecialChars, '', $vanityName)))   {
        $user = db_connect("SELECT mem_id FROM users WHERE vanity_url = '$vanityName' LIMIT 1");
        if(mysql_num_rows($user)==1)    {
            $newArray = mysql_fetch_array($user);
            $memID = $newArray['mem_id'];
            header('location:member-profile.php?mem_id='.$memID.'&token=1');
            exit;
        }
        else {
            header('location:advanced-search.php?error=user_not_found');
            exit;
        }
    }
    else    {
        header('location:advanced-search.php?error=user_not_found');
        exit;
    }
}
else    {
    header('location:index.php');
    exit;
}

    //echo '<br>' . $vanityName;

?>
4

1 に答える 1

0

これを yout .htaccess ファイルに使用します。

RewriteRule ^([a-zA-Z0-9_-]+)$ member_profile.php?member_id=$1

member_profile.php を作成し、userid ではなくユーザー名の形式で member_id を取ります。ユーザー名からユーザー ID への変換を使用し、ユーザー名を検証します。特定のユーザー名のプロファイルを表示します。

于 2012-08-28T01:44:08.597 に答える