[英]HTaccess 404 with mod_rewrite
我的HTaccess网址有一个小问题。 我想让我的网址更加友好,我目前的网址是:
url.com/blogitem/2
url.com - >域名; 博客 - > blogitem.php; 2 - >从DB获取博客项目的ID
现在我希望URL如下:
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)。 对不起我的英语不好,这不是我的母语。 感谢您提前帮助!
你的正则表达式似乎不正确,试试这两个规则:
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]
您显示的网址末尾没有“/”:url.com/blogitem/2/name-title-info然后您在.htaccess中提到了blog.php我觉得您也想要这个网址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>';
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.