我的HTaccess网址存在一个小问题。我想让我的网址更加友好,我目前的网址是:
url.com/blogitem/2
url.com - >领域;博客 - > blogitem.php; 2 - >从DB获取博客项目的ID
现在我希望网址如下:
url.com/blogitem/2/name-title-info
我已经为它创建了HTaccess部分和PHP部分,但每次访问URL时它都会给我一个404错误页面。
HTaccess部分:
# Blog SEO Urls.
RewriteRule ^blog/([0-9]*)/?$ blog.php?page=$1 [NC,L]
RewriteRule ^blogitem/([0-9]*)/?$/([a-z]*)/?$ blogitem.php?id=$1&name=$2 [NC,L]
PHP部分:
$trancTitle = trim(strtolower($blogTitle));
$underscoreTitle = preg_replace('/\s+/', '-', $trancTitle);
<a href="blogitem/<?php echo $blogId; ?>/<?php echo $underscoreTitle;?>">
有人可以解释为什么我得到一个错误页面作为回报(准确地说是404)。对不起我的英语不好,这不是我的母语。感谢您提前帮助!
答案 0 :(得分:2)
你的正则表达式看起来不对,请尝试以下两条规则:
RewriteEngine On
RewriteBase /
# Blog SEO Urls.
RewriteRule ^blog/([0-9]+)/?$ blog.php?page=$1 [NC,L,QSA]
RewriteRule ^blogitem/([0-9]+)/([\w-]+)/?$ blogitem.php?id=$1&name=$2 [QSA,NC,L]
答案 1 :(得分:1)
您显示的网址末尾没有“/”:url.com/blogitem/2/name-title-info 然后你在你的.htaccess中提到了blog.php我想你也想要这个url url.com/blog/2
所以,你需要改变一下正则表达式,试着将它放在你的.htaccess中:
# Blog SEO Urls.
RewriteRule ^blog/([0-9]+)$ blog.php?page=$1 [L]
RewriteRule ^blogitem/([0-9]+)/([a-z]+)$ /blogitem.php?id=$1&name=$2 [L]
然后在你的php中,你将通过GET方法接收变量 试试看:
<?php
echo '<pre>';
print_r($_GET);
echo '</pre>';
?>