繁体   English   中英

HTaccess 404与mod_rewrite

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM