使用 .htaccess 文件后,从我网站上的一个页面重定向到另一个页面会导致 404 错误

Posted

技术标签:

【中文标题】使用 .htaccess 文件后,从我网站上的一个页面重定向到另一个页面会导致 404 错误【英文标题】:Redirecting from one page to another page on my website causes 404 error after using .htaccess file 【发布时间】:2018-11-12 06:09:35 【问题描述】:

目前我正在写一个 php 博客。我使用 .htaccess 文件来获取干净的 url,这里是代码。

RewriteEngine On
RewriteCond %HTTPS !=off
RewriteCond %HTTP_HOST ^mywebsitename\.com$
RewriteRule (.*) http://www.mywebsitename.com/$1 [R=301,L]
RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)?$ post.php?post_id=$1&title=$2 [L]
RewriteRule ^(.+)/(admin|css|fonts|ico|include|js|images)/(.*)$ $2/$3 [L] 

我在网上得到了这段代码。由于我是 php 和这个 htaccess 的新手,这就是为什么我对它不太了解的原因。

在添加 .htaccess 文件之前的 URL 是: [http://www.mywebsitename.com/post.php?post_id=12&title=post-title][1]

并且,添加 .htaccess 文件后的 URL: http://www.mywebsitename.com/12/post-title

所以 rewriterule 给了我我想要的 url。但它导致页面重定向错误。在访问以下 url 后,每当我点击主页按钮时使用 .htaccess 文件之前:http://www.mywebsitename.com/post.php?post_id=12&title=post-title 然后URL成功重定向到首页,即:http://www.mywebsite.com/index.php页面。

但是现在在访问相同的 url 后使用 .htaccess 文件后,它会像这样重定向: http://www/mywebsitename.com/12/index.php

现在它正在触发 404 page not found 错误。因为从技术上讲,服务器上的 12 目录下不存在这样的页面。

所以访问以下链接后:http://www.mywebsitename.com/12/post-title 我希望它正确重定向,因为它在添加 .htaccess 文件之前重定向页面。

请大家帮帮我。 提前致谢。

【问题讨论】:

【参考方案1】:

链接http://www.mywebsitename.com/12/post-title 是您的实际网址。 mywebsitename 是您的域名吗?我认为您应该将其替换为实际的域名。它可能只是一个占位符文本

【讨论】:

这个生成的 url:www/mywebsitename.com/12/index.php。如果您的实际域是正确的,那么您需要在使用正则表达式之前先添加主机名。我认为是这样的 ^%HTTP_HOST/([0-9]+)/([a-zA-Z0-9_-]+)?$ post.php?post_id=$1&title=$2 [L]跨度> 这更像是一个评论而不是一个答案 没有。 www.mywebsitename.com 不是我的实际域名。实际域名不同

以上是关于使用 .htaccess 文件后,从我网站上的一个页面重定向到另一个页面会导致 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

Htaccess 文件不会更改文件扩展名

通过 .htaccess 在 PHP 中延长会话超时

通过 .htaccess 在 PHP 中延长会话超时

one.com 网络空间上的 htaccess

拒绝使用 htaccess 直接访问文件

在重写后阻止用户使用旧URL浏览网站