我在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.php
将mysite/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
这是我的目录的图像,链接在index.php中,点击后它将我发送到profile.php所有上述文件都位于WAMP/www/Portal/mysite
答案 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.php
和Portal/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
也在那里。