具有多参数的htaccess

时间:2016-09-15 16:44:27

标签: apache .htaccess mod-rewrite

我正在尝试重定向我的链接:

my href = example.com/?p=users&page=2
我的网址应为= example.com/users/page/2

此时,我的mod_rewrite正在使用:

my href = example.com/?p=users
我的网址= example.com/users

这是我的htaccess:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/index.php
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
</IfModule>

2 个答案:

答案 0 :(得分:2)

完整的.htaccess:

Options +FollowSymLinks
RewriteEngine On

# skip all files and directories from rules below
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# skip index.php from any rules below
RewriteRule ^index\.php$ - [L,NC]

# handle /users/page/2 URI
RewriteRule ^([\w-]+)/([\w-]+)/(\d+)/?$ index.php?p=$1&$2=$3 [L,QSA]

# handle /users URI
RewriteRule ^([\w-]+)/?$ index.php?p=$1 [L,QSA]

答案 1 :(得分:1)

RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]

尝试将RewriteRule更改为:

RewriteRule ^(.+?)(?:/page/(\d*))?$ index.php?p=$1&page=$2 [L,QSA]

对此&#34;一条规则的轻微警告&#34;方法是将example.com/users的请求重写为index.php?p=users&page=,即。一个空的page网址参数。

(.+?) - 此子模式中的问号使正则表达式非贪婪,否则将始终省略正则表达式的可选第二部分。