php - 具有多个参数的 htaccess 重写规则

标签 php .htaccess mod-rewrite

这是我的.htaccess 文件:

Options +FollowSymLinks
Options -Multiviews

RewriteEngine On
RewriteBase /website/

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [S=20]

RewriteRule ^(.*)$ $1.php 
RewriteRule ^([a-z0-9_-]+)/([a-z0-9_-]+)(/)?$ index.php?occ=$1&cat=$2

现在这两行一起不起作用,例如:

如果我要访问 contact.php,我会输入我的网址:localhost/website/contact 它会起作用

但是,如果我想通过在我的网址中输入以下内容来转到 location/website/index.php?occ=occasion&cat=category:localhost/website/occasion/category 只有在删除第一个重写规则时它才会起作用

但是我无法再访问 localhost/website/contact

我在这里缺少什么?

最佳答案

您的问题是您的订单。

/website/occasion/category 首先被重写为 /website/occasion/category.php,然后它无法匹配第二条规则。

RewriteRule ^([a-z0-9_-]+)/([a-z0-9_-]+)(/)?$ index.php?occ=$1&cat=$2 [L]
RewriteRule ^(.*)$ $1.php

更改顺序并向规则添加 [L] 参数(成功执行后停止执行后续规则)应该可以解决该问题。

关于php - 具有多个参数的 htaccess 重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16585955/

相关文章:

apache - .htaccess,命令允许,拒绝,拒绝所有 : confusion

.htaccess - 将 http 重定向到 https,将 www 重定向到非 www,并删除一次重定向中的最后一个斜杠

php - laravel 尾部斜杠重定向到本地主机

apache - htaccess根据主机名或域名进行重写

PHP - MYSQL 不返回设置参数内的结果

php - Drupal 8 - 更改节点显示设计

PHP 游戏 session 不工作

regex - RewriteRule 和重定向 301 有什么区别

PHP : PDO fetch() not showing result

Apache 重写规则 : Is the pattern "." a special case?