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

Bol*_*las 2 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
Run Code Online (Sandbox Code Playgroud)

现在这两行一起不起作用:

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

但是,如果我想通过在我的url:localhost/website/occasion/category中键入这个来访问location/website/index.php?occ = occasion&cat = category,它将仅在我删除第一个重写规则时有用

但是我不能再去localhost/website/contact了

我在这里想念的是什么?

Cob*_*ast 5

您的问题是您的订单.

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

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

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