Apache重定向问题

时间:2013-03-28 19:46:17

标签: php url-rewriting

我在localhost中有一个使用来自

的缩短网址的网站

http://localhost/Portal/mysite/profile.php?id=1

http://localhost/Portal/mysite/profile/1/this_is_id

使用下面的.htaccess

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteBase /

RewriteRule ^profile/([0-9]+)/.*$  /Portal/mysite/profile.php?id=$1 [QSA,L,NC]

但是,我需要将网址改为http://localhost/Portal/mysite/this_is_id

这一切都在localhost中,这就是为什么.com没有出现,但网站文件是mysite的原因 因此,我尝试使用mysite/index.phpmysite/profile.php中的链接发送到$id,但它无效。无论如何简单的建议都没关系,谢谢

更新


好的,我按你们的要求做了,但这是将用户从索引页面发送到个人资料页面的功能,我不知道如何修改它,即使我已经完成了你们两个人的要求。

    // sql query goes here. 
    foreach ($stmt as $row) {
    $url = "/profile/$row[id]/".preg_replace('/[^a-zA-Z0-9-_]/', '-', $row['company']);  

        echo "<h4><a href=\"$url\" class=\"urln\">". substr($row['company'], 0,26)."</a></h4>
                    ";

    }

回声是链接,现在当我按下该链接时,我需要找不到页面

更新2


enter image description here 这是我的目录的图像,链接在index.php中,点击后它将我发送到profile.php所有上述文件都位于WAMP/www/Portal/mysite

2 个答案:

答案 0 :(得分:1)

试试这个:

#for subdirectory
RewriteBase /Portal/mysite/
#for localhost
#RewriteBase /
#RewriteRule ^profile/([0-9]+)$ profile.php?id=$1 [QSA,L,NC]
#RewriteRule ^profile/([0-9]+)/([a-zA-Z0-9\-]+)$ profile.php?id=$1 [QSA,L,NC]
RewriteRule ^profile/([a-zA-Z0-9\-]+)$ profile.php?id=$1 [QSA,L,NC]
.htaccess目录中的

profile.phpPortal/Site

更新:

foreach ($stmt as $row) {
    $url = "/profile/".preg_replace('/[^a-zA-Z0-9-_]/', '-', $row['company']) . "-" . $row[id];
    echo "<h4><a href=\"$url\" class=\"urln\">". substr($row['company'], 0,26)."</a></h4>";

}

profile.php

var_dump($_GET);

if(isset($_GET['id'])) {
    $params = explode('-', $_GET['id']);
    $id = (int)array_pop($params);

    var_dump($id);
}

.htaccess

RewriteEngine On
RewriteBase /Portal/mysite/
RewriteRule ^profile/([a-zA-Z0-9\-]+)$ profile.php?id=$1 [QSA,L,NC]

运行你的链接(f.e。:localhost/Portal/mysite/profile/This-is-name-12)和结果:

array (size=1) 'id' => string 'This-is-name-12' (length=15)

int 12

12是您的个人资料ID。

答案 1 :(得分:0)

尝试:

RewriteRule ^([0-9]+)$  profile.php?id=$1 [QSA,L,NC]

如果规则(.htaccess)位于您的/Portal/mysite/目录中,并且profile.php也在那里。