Apache Htaccess中的分页URL结构

Apache Htaccess中的分页URL结构,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我的URL结构是mysite.com/category.php?c=abc&page=4 我需要一个URL结构,如mysite.com/category/abc/page/4 我这次重写的Htaccess文件代码如下所示 RewriteEngine On <IfModule mod_rewrite.c> https redirect Rule Here </IfModule> RewriteCond %{REQUEST_FILENAME} !-d RewriteC

我的URL结构是
mysite.com/category.php?c=abc&page=4
我需要一个URL结构,如
mysite.com/category/abc/page/4

我这次重写的Htaccess文件代码如下所示

RewriteEngine On
<IfModule mod_rewrite.c>
    https redirect Rule Here
</IfModule>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^([-\w]+)$ blog-post.php?slug=$1 [NC,L]
RewriteRule ^amp/([-\w]+)$ amp/amp.php?slug=$1 [NC,L]
RewriteRule ^mirror/([-\w]+)$ mirror/post.php?slug=$1 [NC,L]
RewriteRule ^category/([a-zA-Z-]+) category.php?c=$1 [NC,L]
RewriteRule ^category/([a-zA-Z-/]+)/page/([0-9]+) category.php?c=$1&page=$2 [NC,L]
RewriteRule ^mirror/category/([a-zA-Z-]+) mirror/category.php?c=$1 [NC,L]
RewriteRule ^feed/([a-zA-Z-]+)$ feed/feed.php?f=$1 [NC,L]
RewriteRule ^author/([a-zA-Z0-9-]+) author.php?name=$1 [NC,L]
RewriteRule ^tag/([a-zA-Z0-9-]+) tag.php?t=$1 [NC,L]
RewriteRule ^mirror/tag/([a-zA-Z0-9-]+) mirror/tag.php?t=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]
RewriteRule ^sitemap\.xml/?$ sitemap.php
RewriteRule ^news-sitemap\.xml/?$ news-sitemap.php
RewriteRule ^image-sitemap\.xml/?$ image-sitemap.php
RewriteRule ^author-sitemap\.xml/?$ author-sitemap.php

ErrorDocument 404 /404.php
ErrorDocument 500 Error
Options -Indexes
重新编写引擎打开
此处的https重定向规则
重写cond%{REQUEST_FILENAME}-D
RewriteCond%{REQUEST_FILENAME}.php-f
重写规则^(.*)$$1.php
重写规则^([-\w]+)$blog post.php?slug=$1[NC,L]
重写规则^amp/([-\w]+)$amp/amp.php?slug=$1[NC,L]
重写规则^mirror/([-\w]+)$mirror/post.php?slug=$1[NC,L]
重写规则^category/([a-zA-Z-]+)category.php?c=$1[NC,L]
重写规则^category/([a-zA-Z-/]+)/page/([0-9]+)category.php?c=$1&page=$2[NC,L]
重写规则^mirror/category/([a-zA-Z-])mirror/category.php?c=$1[NC,L]
重写规则^feed/([a-zA-Z-]+)$feed/feed.php?f=$1[NC,L]
重写规则^author/([a-zA-Z0-9-])author.php?名称=$1[NC,L]
重写规则^tag/([a-zA-Z0-9-])tag.php?t=$1[NC,L]
重写规则^mirror/tag/([a-zA-Z0-9-])mirror/tag.php?t=$1[NC,L]
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[R=301,L]
重写规则^sitemap\.xml/?$sitemap.php
重写规则^news sitemap\.xml/?$news-sitemap.php
重写规则^image sitemap\.xml/?$image-sitemap.php
重写规则^author sitemap\.xml/?$author-sitemap.php
ErrorDocument 404/404.php
错误文档500错误
选项-索引

我面临的问题是,当我试图使用
$\u get[]
变量获取页码时,我无法获取它。其余我可以通过$_get[]

获得ABC,请尝试以下内容。请确保在测试URL之前清除浏览器缓存

你需要注意两点。第一个-您没有使用
$
锚定来确保您的第一个规则只匹配URI,如
http://locahost:80/category/testtest
因此,您的规则与两个URI都匹配。第二,您需要添加条件,以确保这些规则仅适用于不存在的内容(在理想情况下)

重新编写引擎打开
选项-索引
##此处的https重定向规则
重写cond%{REQUEST_FILENAME}-D
RewriteCond%{REQUEST_FILENAME}.php-f
RewriteCond%{ENV:REDIRECT_STATUS}^$
重写规则^(.*)$$1.php[L]
RewriteCond%{ENV:REDIRECT_STATUS}^$
重写规则^([-\w]+)$blog post.php?slug=$1[NC,L]
重写规则^amp/([-\w]+)$amp/amp.php?slug=$1[NC,L]
重写规则^mirror/([-\w]+)$mirror/post.php?slug=$1[NC,L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^category/([a-zA-Z-]+)/?$category.php?c=$1[NC,L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^category/([a-zA-Z-/]+)/page/([0-9]+)/?$category.php?c=$1&page=$2[NC,L]
重写规则^mirror/category/([a-zA-Z-])mirror/category.php?c=$1[NC,L]
重写规则^feed/([a-zA-Z-]+)$feed/feed.php?f=$1[NC,L]
重写规则^author/([a-zA-Z0-9-]+)$author.php?名称=$1[NC,L]
重写规则^tag/([a-zA-Z0-9-])$tag.php?t=$1[NC,L]
重写规则^mirror/tag/([a-zA-Z0-9-]+)$mirror/tag.php?t=$1[NC,L]
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[R=301,L]
重写规则^sitemap\.xml/?$sitemap.php[NC,L]
重写规则^news sitemap\.xml/?$news-sitemap.php[NC,L]
重写规则^image sitemap\.xml/?$image-sitemap.php[NC,L]
重写规则^author sitemap\.xml/?$author-sitemap.php[NC,L]
ErrorDocument 404/404.php
错误文档500错误

你有一套很大的规则。让我试着让你走:

ErrorDocument 404/404.php
选项-索引-多视图
重新启动发动机
此处的https重定向规则
##除非是目录,否则删除尾部斜杠
重写cond%{REQUEST_FILENAME}-D
重写条件%{REQUEST_URI}^(+)/+$
重写规则^%1[R=301,NE,L]
##忽略实际文件和目录的所有URI
RewriteCond%{REQUEST_FILENAME}-d[或]
RewriteCond%{REQUEST_FILENAME}-f
重写规则^-[L]
重写规则^amp/([-\w]+)$amp/amp.php?slug=$1[NC,L,QSA]
重写规则^mirror/([-\w]+)$mirror/post.php?slug=$1[NC,L,QSA]
重写规则^category/([\w-]+)$category.php?c=$1[NC,L,QSA]
重写规则^category/([\w-]+)/page/(\d+)$category.php?c=$1&page=$2[NC,L,QSA]
重写规则^mirror/category/([\w-]+)$mirror/category.php?c=$1[NC,L,QSA]
重写规则^feed/([\w-]+)$feed/feed.php?f=$1[NC,L,QSA]
重写规则^author/([\w-]+)$author.php?name=$1[NC,L,QSA]
重写规则^tag/([\w-]+)$tag.php?t=$1[NC,L,QSA]
重写规则^mirror/tag/([\w-]+)$mirror/tag.php?t=$1[NC,L,QSA]
重写规则^sitemap\.xml$sitemap.php[NC,L]
重写规则^((?:新闻|图片|作者)-网站地图)\.xml$$1.php[NC,L]
重写cond%{DOCUMENT_ROOT}/$1.php-f
重写规则^(+?)/?$$1.php[L]
重写规则^([-\w]+)$blog post.php?slug=$1[QSA,L]

请确保在完全清除浏览器缓存后对其进行测试,或者从命令行
curl

对其进行测试。请确认一下您是否在浏览器中点击了
mysite.com/category/abc/page/4
链接,该链接应在后端重写为
mysite.com/category.php?c=abc&page=4
?是,我也在这样做。
RewriteEngine On
Options -Indexes
<IfModule mod_rewrite.c>
    ##https redirect Rule Here
</IfModule>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.*)$ $1.php [L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^([-\w]+)$ blog-post.php?slug=$1 [NC,L]
RewriteRule ^amp/([-\w]+)$ amp/amp.php?slug=$1 [NC,L]
RewriteRule ^mirror/([-\w]+)$ mirror/post.php?slug=$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^category/([a-zA-Z-]+)/?$ category.php?c=$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^category/([a-zA-Z-/]+)/page/([0-9]+)/?$ category.php?c=$1&page=$2 [NC,L]

RewriteRule ^mirror/category/([a-zA-Z-]+) mirror/category.php?c=$1 [NC,L]
RewriteRule ^feed/([a-zA-Z-]+)$ feed/feed.php?f=$1 [NC,L]
RewriteRule ^author/([a-zA-Z0-9-]+)$ author.php?name=$1 [NC,L]
RewriteRule ^tag/([a-zA-Z0-9-]+)$ tag.php?t=$1 [NC,L]
RewriteRule ^mirror/tag/([a-zA-Z0-9-]+)$ mirror/tag.php?t=$1 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]
RewriteRule ^sitemap\.xml/?$ sitemap.php [NC,L]
RewriteRule ^news-sitemap\.xml/?$ news-sitemap.php [NC,L]
RewriteRule ^image-sitemap\.xml/?$ image-sitemap.php [NC,L]
RewriteRule ^author-sitemap\.xml/?$ author-sitemap.php [NC,L]

ErrorDocument 404 /404.php
ErrorDocument 500 Error