Php 使用.htaccess重写URL仅对第一个查询字符串有效

Php 使用.htaccess重写URL仅对第一个查询字符串有效,php,.htaccess,url,Php,.htaccess,Url,我试图用htaccess重写我的url,但它只对第一个查询字符串起作用 我想要的是重写这个URL acnologia.com/index.php?page=images&tag=nature into something like this acnologia.com/images/nature 它对第一个查询字符串acnologia.com/images有效 但如果我在“图像”之后添加另一个目录,则不起作用 这是我的.htaccess代码: RewriteEngine On Rew

我试图用htaccess重写我的url,但它只对第一个查询字符串起作用

我想要的是重写这个URL

acnologia.com/index.php?page=images&tag=nature

into something like this acnologia.com/images/nature
它对第一个查询字符串acnologia.com/images有效 但如果我在“图像”之后添加另一个目录,则不起作用

这是我的.htaccess代码:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1&tag=$2
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?page=$1&tag=$2

最基本的规则是这样的

RewriteRule ^(.*)/(.*)$ index.php?page=$1&tag=$2
更具体的是

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?page=$1&tag=$2
安德鲁在评论中回答了这个问题

您的最终重写规则应如下所示<指定代码>重写条件,使js、css、png等文件与此重写规则不匹配

RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?page=$1&tag=$2 [L,NC]

这很有帮助。

您原来的规则中只有一个组,所以没有2美元

试试这个:

RewriteRule ^([a-z\d_-]+)/([a-z\d_-]+)$ index.php?page=$1&tag=$2 [NC,L] 

\d等于0-9,NC表示nocase

在哪里定义了$2?RewriteRule^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$index.php?page=$1&tag=$2它工作了…通过添加这行代码RewriteRule^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-])$index.php?page=$1&tag=$2但我有另一个问题,在第二个查询字符串上,索引文件不再包含。无法理解您之前的注释。您能提供更多详细信息吗?然后您需要指定不覆盖css和js文件。我在答案中加了一个改写词。