【问题标题】:.htaccess how to load rewrited page instead redirect.htaccess 如何加载重写页面而不是重定向
【发布时间】:2020-06-24 07:28:53
【问题描述】:

我有一个纯 HTML/CSS/PHP 博客。结构简单。 主页是 domain.com/blog (最新帖子)和 domain.com/blog?page=2 (用于第 2 页中的帖子等)。 该页面由 blog.php 文件控制。如果用户想阅读例如“How-to-learn-polish”的帖子,他会转到 domain.com/blog_post?name=How-to-learn-polish,这也是可行的。

我的问题是,如何在 htaccess 中编写规则来加载页面内容 domain.com/blog_post?name=How-to-learn-polish 在网址中 domain.com/blog/How-to-learn-polish

我在互联网上搜索了我的问题的解决方案并创建了该规则

RewriteEngine On
RewriteRule ^blog/([^/]*)$ blog_post.php?name=$1 [L,NC]

这条规则在 80% 的情况下都可以正常工作,因为它从 domain.com/blog/How-to-learn-polishdomain.com/blog_post?name=How-to-learn-polish

我不想重定向但在此 URL domain.com/blog/How-to-learn-polish 中加载帖子

我应该在我的 htaccess 中改变什么来做到这一点?我的htaccess全是这样的

Header set Cache-Control "max-age=31536000, public"

RewriteEngine On
RewriteRule ^blog/([^/]*)$ blog_post.php?name=$1 [L,NC]

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

RewriteBase /
RewriteRule ^(.+)\.php$ /$1 [R,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ /$1.php [NC,END]

【问题讨论】:

    标签: apache .htaccess redirect


    【解决方案1】:

    您的规则需要重新排序:

    Header set Cache-Control "max-age=31536000, public"
    
    RewriteEngine On
    
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301,NE]
    
    RewriteRule ^(.+)\.php$ /$1 [R=301,NC,L]
    
    RewriteRule ^blog/([^/]+)/?$ blog_post.php?name=$1 [END,NC,QSA]
    
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.*?)/?$ /$1.php [END]
    

    确保使用其他浏览器或从浏览器中删除缓存数据以测试此规则以避免旧缓存。

    【讨论】:

    • 非常感谢!现在我测试了您的解决方案,并且完全有效。我需要做的就是将 URL 修复为 CSS 并将 修复为绝对而非相对,但您完全可以帮助解决我的问题。再次感谢。
    • 要修复 css/js 问题,您可以在页面 HTML 的 <head> 标记下方添加此代码:<base href="/" />
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 2023-03-04
    • 2011-11-19
    • 2022-01-14
    • 2016-04-07
    • 1970-01-01
    相关资源
    最近更新 更多