这是我的.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/