繁体   English   中英

URL重写:重写规则冲突

[英]URL rewriting: conflicting rewrite rules

我正在尝试用URL重写做三件事:

  1. 删除.php文件扩展名
  2. 使我的帖子URL看起来像这样:mydomain.co.uk/resources/example-post默认值为mydomain.co.uk/resources/post.php?s=example-post
  3. 使我的类别存档URL看起来像这样:mydomain.co.uk/resources/category/example-category默认值为mydomain.co.uk/resources/archive.php?cat=example-category

这是我目前在.htaccess文件中所拥有的:

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]

一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM