Apache URL重写:重写规则冲突
我试图通过URL重写做三件事:Apache URL重写:重写规则冲突,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我试图通过URL重写做三件事: 删除.php文件扩展名 我的帖子URL如下所示:mydomain.co.uk/resources/example-post默认为mydomain.co.uk/resources/post.php?s=example post 让我的类别存档URL如下所示:mydomain.co.uk/resources/category/example-category默认为mydomain.co.uk/resources/archive.php?cat=example cate
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [L,QSA]
RewriteRule ^resources/([a-zA-Z0-9-/]+)$ /resources/post.php?s=$1 [L]
RewriteRule ^resources/category/([a-zA-Z0-9-/]+)/page/([0-9]+)/{0,1}$ /resources/archive.php?cat=$1&page=$2 [L]
RewriteRule ^resources/category/([a-zA-Z0-9-/]+)$ /resources/archive.php?cat=$1 [L]
它在做前两件事。但不是第三个
如果我删除
RewriteRule ^([^\.]+)$ $1.php [L,QSA]
然后它做第三件事,但不是前两件事
你知道怎么回事吗?如何让它同时完成这三件事?找到了解决方案
只是需要交换订单,我现在有了这个:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [L,QSA]
RewriteRule ^resources/category/([a-zA-Z0-9-/]+)/page/([0-9]+)/{0,1}$ /resources/archive.php?cat=$1&page=$2 [L]
RewriteRule ^resources/category/([a-zA-Z0-9-/]+)$ /resources/archive.php?cat=$1 [L]
RewriteRule ^resources/([a-zA-Z0-9-/]+)$ /resources/post.php?s=$1 [L]
它工作得很好。你是在按原样做。您应该始终调用“最终”url,然后将其重写为php脚本。ie.mydomain.co.uk/resources/category/example-category转换为mydomain.co.uk/resources/archive.php?cat=示例类别,而不是相反。对不起,我不明白你的意思。我对URL重写不太在行,换个方式吧。调用页面mydomain.co.uk/resources/category/example-category,而不是调用mydomain.co.uk/resources/archive.php?cat=example-category,然后重写到mydomain.co.uk/resources/archive.php?cat=example-category。尝试将它们交换。但它不起作用。我可能在最初的问题中写错了东西。我已经编辑过了。