【问题标题】:htaccess and custom php cms pretty urlshtaccess 和自定义 php cms 漂亮的 url
【发布时间】:2017-01-18 12:55:02
【问题描述】:

我已经构建了一个自定义 PHP、mySQL CMS。新闻文章链接显示如下:

https://www.example.com/news/post.php/?p=example-article-slug

但是,我希望它们显示为:

https://www.example.com/example-article-slug

htacess 文件中的以下代码有效,但破坏了 htaccess 中的所有其他功能,例如 404 和 301 重定向。有什么想法吗?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ news/post.php/?p=$1 [QSA,L]

这是我的完整 htaccess ...

            RewriteEngine On 
            RewriteCond %{SERVER_PORT} 80 
            RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

            Options -Indexes
            ErrorDocument 201 /404.php
            ErrorDocument 401 /404.php
            ErrorDocument 404 /404.php
            ErrorDocument 402 /404.php
            ErrorDocument 505 /404.php
            ErrorDocument 500 /404.php
            RewriteEngine On
            RewriteBase /

            Redirect 301 /oldpage.php   http://www.example.com/

            #Check for www
            RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
            RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

            RewriteCond %{THE_REQUEST} \ /(.*/|)(?:index\.php)?\?id=([^\s&]+) [NC]
            RewriteRule ^ /%1%2? [R=301,L,NE]

            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ news/post.php/?p=$1 [QSA,L]

            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ news/category/?cat=$1 [QSA,L]

【问题讨论】:

  • news/category/?... 的最后一条规则永远不会触发,因为之前的规则是将每个非文件/目录发送到 news/post.php

标签: php mysql .htaccess


【解决方案1】:

你可以用这个:

RewriteEngine On
RewriteRule ^([^/]*)$ /news/post.php/?p=$1 [L]

它会给你留下这个 URL:https://www.example.com/example-article-slug

确保在测试之前清除缓存。

【讨论】:

  • 我使用了这个可行的方法,但是它仍然可以排除 htaccess 的其余规则。我现在将发布我的整个 htaccess ...
  • 问题不在于上述规则。这将是您的其他规则之一。我建议将其他所有内容都注释掉,然后开始取消注释并进行测试,直到找到导致问题的规则。您还可以通过结合其中一些规则来加速您的网站。比如强制wwwhttps
猜你喜欢
  • 2012-05-07
  • 2011-07-31
  • 1970-01-01
  • 2019-03-03
  • 2012-01-17
  • 1970-01-01
  • 2023-02-26
  • 1970-01-01
相关资源
最近更新 更多